Я изо всех сил пытаюсь создать несколько таблиц в MySQL, используя Java.
Я использую пакетный оператор для создания нескольких таблиц одновременно. Когда я печатаю схему, я вижу, что некоторые таблицы созданы, но пять таблиц не отображаются и выдают ошибку синтаксиса SQL. У всех пяти таблиц, которые не созданы должным образом, есть несколько внешних ключей, что заставляет меня думать, что это как-то связано с тем, как я их определил.
Одна из таблиц, которая терпит неудачу - это Volume, подробно описано ниже:
stmt.addBatch("CREATE TABLE Volume ("
+ "Year INT NOT NULL, ISSN INT NOT NULL, JournalTitle VARCHAR(20) NOT NULL, "
+ "PRIMARY KEY(Year, ISSN), "
+ "FOREIGN KEY (ISSN, JournalTitle) REFERENCES Journal(ISSN, JournalTitle)); ");
И ссылается на таблицу Journal (которая создается успешно), показанную ниже:
stmt.addBatch("CREATE TABLE Journal ("
+ "ISSN INT NOT NULL, ChiefEditor VARCHAR(20) NOT NULL, JournalTitle VARCHAR(20) NOT NULL, "
+ "PRIMARY KEY(ISSN)); ");
У меня также есть таблицы, которые имеют несколько внешних ключей в разных таблицах, и они отлично работают- проблема возникает только для таблиц с двумя внешними ключами в одной таблице. Например, следующая таблица подходит:
stmt.addBatch("CREATE TABLE JournalEditor ("
+ "Email VARCHAR(30) NOT NULL, ISSN INT NOT NULL, "
+ "PRIMARY KEY(Email, ISSN), "
+ "FOREIGN KEY (Email) REFERENCES Editor(Email), "
+ "FOREIGN KEY (ISSN) REFERENCES Journal(ISSN)); ");
Я почти уверен, что правильно структурировал определения внешнего ключа, но не могу определить, что я делаю неправильно. Любая помощь будет оценена!