Ошибка в создании таблицы -mysql
-
29-09-2019 - |
Вопрос
Ошибка: не может создать таблицу c.handsets
Как мне найти проблему?
Я сделал базу данных и обнаружил, что в ней созданы другие таблицы, но только один дает мне эту ошибку.
Решение
Есть условия, которые должны быть удовлетворены иностранным ключом:
Вы должны использовать двигатель NODB хранения в обеих таблицах.
Типы данных должны быть идентичный в обеих таблицах. Например, Varchar (250) не идентичен Varchar (255).
В столбце (ов) должен быть первичный ключ или уникальное ограничение.
Ваш иностранный ключ должен объявить тот же столбец (ы) в том же порядке, что и в первичном ключе или уникальном ограничении в родительской таблице. Это ваша наиболее вероятная проблема.
Так, например, если это ваша родительская таблица:
CREATE TABLE PhoneModels (
make VARCHAR(255),
model VARCHAR(255),
PRIMARY KEY (make, model)
);
Следующее будет неправильно, потому что первичный ключ имеет два столбца, но у каждого иностранного ключа есть один столбец.
CREATE TABLE Handsets
(
...
make VARCHAR(255),
model VARCHAR(255),
FOREIGN KEY (make) REFERENCES PhoneModels(make), // WRONG
FOREIGN KEY (model) REFERENCES PhoneModels(model) // WRONG
);
Это не работает так; У вас должен быть один иностранный ключ, который ссылается на оба столбца.
CREATE TABLE Handsets
(
...
make VARCHAR(255),
model VARCHAR(255),
FOREIGN KEY (make, model) REFERENCES PhoneModels(make, model), // RIGHT
);