C ++ Доступ к другому члену класса [закрыто]

Вы удаляете родительскую таблицу, которая запускает заданное значение по умолчанию в дочернем элементе. БД пытается установить дочерние записи по умолчанию 0. Но в родительской таблице нет 0 записей, вызывающих нарушение внешнего ключа.

blockquote>

Ознакомьтесь с руководством по MySQL о foreign key constraints :

Если вы заново создаете таблицу, которая была удалена, она должна иметь определение, соответствующее ограничениям внешнего ключа, ссылающимся на него. Он должен иметь правильные имена и типы столбцов, и он должен иметь индексы на ссылочных ключах, как указано ранее. Если они не выполняются, MySQL возвращает номер ошибки 1005 и ссылается на ошибку 150 в сообщении об ошибке.

blockquote>

Несколько идей:

  • Лучше отказаться от таблиц и создайте его с помощью хорошо сформированного синтаксиса.
  • Обязательно добавьте ENGINE=InnoDB; в свою команду CREATE TABLE.
  • Убедитесь, что InnoDB включен на вашем сервере MySQL. Чтобы проверить это, попробуйте выполнить эту команду: SHOW VARIABLES LIKE 'have_innodb'; - если он возвращает YES, тогда включен InnoDB.
  • Проверьте вашу команду для верхних и нижних регистров в именах таблиц и полей.
  • Проверьте это не только на таблицу, которую вы хотите создать, но и на таблицы, к которым относятся внешние ключи.
  • Убедитесь, что ваши упомянутые таблицы правильно проиндексированы.

«При создании ограничения внешнего ключа MySQL требует полезного индекса как в таблице ссылок, так и в таблице ссылок. Индекс в таблице ссылок создается автоматически, если он не существует, но тот, который указан в таблице должен быть создан вручную (Источник). Кажется, что ваш отсутствует. "

См. Ошибка внешнего ключа MySQL 1005 errno 150

-10
задан user3723837 9 June 2014 в 21:19
поделиться