#mysql
#mysql
Вопрос:
Первая таблица
CREATE TABLE `payments` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`payment_status_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
);
Вторая таблица
Итак, я пытаюсь добавить внешний ключ, но получаю сообщение об ошибке: ER_CANNOT_ADD_FOREIGN: Cannot add foreign key constraint
Теперь я не могу понять, почему возникает эта ошибка. Типы столбцов одинаковы? Ключ даже добавляется отдельно позже после создания обеих таблиц. Чего мне здесь не хватает?
CREATE TABLE `payment_statuses` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`status` char(20) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
);
Добавление FK:
alter table payments add constraint `payments_payment_status_id_foreign` foreign key (`payment_status_id`) references `id` (`payment_statuses`);
Комментарии:
1. Вызывается другая таблица
payment_statuses
, а неid
. Вы должны поменять местами аргументы.2. @Progman F, как я это пропустил, я понятия не имею. Большое спасибо, чувак.
3. Однако вы должны признать, что сообщение об ошибке примерно такое же неубедительное, как и сообщение об ошибке. По сути, он говорит: «Не могу этого сделать. Поди разберись, почему. Присоска. »
4. Для mysql версии 8.0.22 сообщение об ошибке было «ОШИБКА 1824 (HY000): не удалось открыть таблицу, на которую ссылается ‘id'».