MySQL не может добавить ограничение внешнего ключа в таблицы - PullRequest
3 голосов
/ 16 января 2012

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

Я запускаю движок InnoDB для всех таблиц и убедился, что тип и размер данных одинаковы в обеих таблицах.

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

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

Есть ли что-то еще, что я должен искать?

У меня есть тестовые данные почти во всех таблицах, это будет иметь значение?

РЕДАКТИРОВАТЬ: Когда я вижу ошибку, обычно это "# 1005 - Не удается создать таблицу 'db_name. # Sql-43d_8e' (errno: 150)", которая говорит о несоответствии данных, согласно документации...В противном случае MySQL Workbench не позволит мне сделать это, поэтому я не знаю проблемы.

Ответы [ 3 ]

4 голосов
/ 28 августа 2012

Вы также должны убедиться, что ваши столбцы совпадают.Проблема, с которой я столкнулся, заключается в том, что я не заметил, что один был подписанным int, а другой - без знака.

1 голос
/ 08 сентября 2013

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

1 голос
/ 16 января 2012

Это имеет значение, если у вас есть данные, которые не могут быть правильно связаны с внешними ключами, например, у вас есть запись в «комментариях» с id_article = 10, но у вас нет записи в «статьях» с идентификатором = 10 .. в этом случае вы не можете добавить внешний ключ

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