Почему я не могу добавить внешний ключ здесь, когда таблица и столбец существуют и имеют один и тот же тип?

#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'».