Ако цитирате колоната id
при създаване на OTHERTABLE
използвайки двойни кавички ("id"
), тогава трябва да го цитирате и при създаване на ограничението за референтна цялост и при запитване на данни. По принцип трябва да го цитирате всеки път. Предлагам да не цитирайте го при създаване на таблицата, защото по този начин не е нужно да го цитирате по-късно. Цитирането означава, че идентификаторът е чувствителен към малки и големи букви. За MySQL работи, защото вътрешно MySQL преобразува идентификаторите без кавички в малки букви, за разлика от други бази данни. Но за H2 и други бази данни не работи.
Следните две изрази работят както за MySQL, така и за H2:
CREATE TABLE IF NOT EXISTS OTHERTABLE (
id BIGINT AUTO_INCREMENT NOT NULL
);
CREATE TABLE IF NOT EXISTS SOMETABLE (
id BIGINT AUTO_INCREMENT NOT NULL,
FOREIGN KEY (id) REFERENCES OTHERTABLE(id)
);
Така че, ако имате изключение във втория израз, най-вероятно сте използвали различен начин за създаване на първата таблица (OTHERTABLE
). И тук е проблемът.
Следващия път, ако зададете въпрос, моля, включете и create table
изявление на първата таблица и публикувайте завършеното съобщение за грешка.