Таблицы MySQL Creating с Внешними ключами, дающими errno: 150

Я предлагаю, чтобы Вы попробовали BigInteger. Если это не удается, можно использовать БОЛЬШОЙ ГЛОТОК , чтобы добавить код C/C++ для больших целочисленных вычислений и связать его в код.

96
задан Bill Karwin 28 December 2017 в 19:03
поделиться

2 ответа

Каково текущее состояние вашей базы данных при запуске этого сценария? Он совсем пустой? Ваш SQL отлично работает для меня при создании базы данных с нуля, но ошибка 150 обычно связана с удалением и воссозданием таблиц, которые являются частью внешнего ключа. У меня такое ощущение, что вы работаете не со 100% свежей и новой базой данных.

Если вы ошибаетесь, когда "исходный" загружаете свой файл SQL, вы должны иметь возможность запустить команду "SHOW ENGINE" INNODB STATUS »из командной строки MySQL сразу после команды« source », чтобы увидеть более подробную информацию об ошибке.

Вы также можете проверить ввод вручную:

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

- Справочное руководство MySQL 5.1 .

10
ответ дан 24 November 2019 в 05:31
поделиться

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

Часто свойство 'unsigned' в столбце идентификатора может вас уловить .

ALTER TABLE `dbname`.`tablename` CHANGE `fieldname` `fieldname` int(10) UNSIGNED NULL;
25
ответ дан 24 November 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: