Работает над добавлением тестирования в существующий проект, который использует Flyway. Таблицы находятся в версионных файлах, поэтому они не могут измениться, но пытаются выяснить причину этого базового варианта использования.
CREATE TABLE table1
(
id LONG PRIMARY KEY AUTO_INCREMENT
);
CREATE TABLE table2
(
id LONG PRIMARY KEY AUTO_INCREMENT
);
CREATE TABLE table3
(
id LONG PRIMARY KEY AUTO_INCREMENT,
t1_id LONG,
t2_id LONG
);
ALTER TABLE table3
ADD FOREIGN KEY (t1_id) REFERENCES table1 (id),
ADD FOREIGN KEY (t2_id) REFERENCES table2 (id);
Причины:
SQL State : 42000
Error Code : 42000
Message : Syntax error in SQL statement "ALTER TABLE TABLE3
ADD FOREIGN KEY (T1_ID) REFERENCES TABLE1 (ID),[*]
ADD FOREIGN KEY (T2_ID) REFERENCES TABLE2 (ID)"; SQL statement:
ALTER TABLE table3
ADD FOREIGN KEY (t1_id) REFERENCES table1 (id),
ADD FOREIGN KEY (t2_id) REFERENCES table2 (id) [42000-200]
Location : db/migration/V1_0__init.sql ...V1_0__init.sql)
Line : 18
Statement : ALTER TABLE table3
ADD FOREIGN KEY (t1_id) REFERENCES table1 (id),
ADD FOREIGN KEY (t2_id) REFERENCES table2 (id)
В тестировании следующие два сценария ios успешны, хотя ..
-- Only 1 foreign key
ALTER TABLE table3
ADD FOREIGN KEY (t1_id) REFERENCES table1 (id);
-- Inlined foreign keys in table creation
CREATE TABLE table3
(
id LONG PRIMARY KEY AUTO_INCREMENT,
t1_id LONG,
t2_id LONG,
FOREIGN KEY (t1_id) REFERENCES table1 (id),
FOREIGN KEY (t2_id) REFERENCES table2 (id)
);
Есть ли ограничение в H2 для добавления нескольких внешних ключей одновременно?