Несколько внешних ключей Java и MySQL в операторе Create - PullRequest
0 голосов
/ 07 ноября 2019

Я изо всех сил пытаюсь создать несколько таблиц в 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)); ");

Я почти уверен, что правильно структурировал определения внешнего ключа, но не могу определить, что я делаю неправильно. Любая помощь будет оценена!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...