Вы удаляете родительскую таблицу, которая запускает заданное значение по умолчанию в дочернем элементе. БД пытается установить дочерние записи по умолчанию 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 требует полезного индекса как в таблице ссылок, так и в таблице ссылок. Индекс в таблице ссылок создается автоматически, если он не существует, но тот, который указан в таблице должен быть создан вручную (Источник). Кажется, что ваш отсутствует. "