MySQL FOREIGN ключ не работает - PullRequest
1 голос
/ 19 марта 2011

Я разместил вопрос здесь, и согласно ответу я пытаюсь создать следующую таблицу MySQL, но она не работает, однако, если я удаляю две сторонние команды, она работает

$query="CREATE TABLE IF NOT EXISTS picture(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
)ENGINE=InnoDB";
mysql_query($query,$con);

$query="CREATE TABLE IF NOT EXISTS user(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
)ENGINE=InnoDB";
mysql_query($query,$con);

$query="CREATE TABLE IF NOT EXISTS pictureRating
(
ID INT NOT NULL AUTO_INCREMENT,
pictureID INT NOT NULL,
userID INT NOT NULL,
rater INT NOT NULL,
creationDate TIMESTAMP DEFAULT NOW(),
context VARCHAR(150),
rating TINYINT,

PRIMARY KEY (ID),
FOREIGN KEY (pictureID) REFERENCES picture(ID) ON UPDATE CASCADE,
FOREIGN KEY (userID) REFERENCES user(ID) ON UPDATE CASCADE
)ENGINE=InnoDB";
mysql_query($query,$con)

Iне могу понять, почему таблицы не создаются

1 Ответ

3 голосов
/ 19 марта 2011

Вам нужно отбросить все три таблицы перед запуском скрипта.

Недостаточно просто сбросить таблицу pictureRating. У вас могут быть старые версии первых двух таблиц, которые могут привести к сбою создания третьей таблицы с ограничениями внешнего ключа, но успешно, если вы их опустите.

Когда я удаляю все три таблицы и затем пытаюсь выполнить ваши команды, все работает нормально.

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