Задать вопрос
@entermix

Почему не добавляется внешний ключ?

Есть сл. таблицы:

payments: pastebin.com/KMZgKdNi
payment_statuses: pastebin.com/Lu7pbj0Q
payment_types: pastebin.com/Dhq2GgQR

Таблица payments в данный момент заполнена, поле type_id == 0 (пробовал ставить 1 - без результата), при выполнении запроса:

ALTER TABLE `payments` ADD CONSTRAINT `payments_ibfk_3` FOREIGN KEY (`type_id`) REFERENCES `db_name`.`payment_types`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT;


Происходит ошибка: " Ошибка создания внешнего ключа на type_id (проверьте типы данных)", почему так? Неужели нужно удалять вю информацию с таблицы payments, чтобы добавить внешний ключ?
  • Вопрос задан
  • 4895 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для создания ключа в таблице `payment_types` должны существовать записи со всеми `id`, соответствующими всем имеющимся `payments`.`type_id`.
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Определения полей должны совпадать.
int и unsigned int - разные типы полей.

Ну и, конечно, таковая строка должна существовать.
Ответ написан
mahoho
@mahoho
Full stack certified PHP developer.
Потому что payments.type_id - INT(10) UNSIGNED, а payment_types.id - INT(10) (без unsigned). Исправьте одну из колонок.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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