Что означает ошибка 1452 «сбой ограничения внешнего ключа» во время вставки?

#php #mysql #sql

#php #mysql #sql

Вопрос:

Итак, я пытаюсь добавить информацию в таблицу в phpMyAdmin, но это не позволит мне «добавить или обновить дочернюю строку» с кодом ошибки # 1452.

 INSERT INTO tblBooking (BookingRef, AppRef, BookingDate, TableNo, Verified, VerifyStaffID, bPassword)

VALUES ('1', '1', '2021-03-05', 'Table 1', 'Y', '2', 'Password123'),
('2', '1', '21-01-07', 'Table 2', 'N', '3', 'Chain'),
('3', '2', '20-11-02', 'Table 3', 'Y', '1', 'aSecret'),
('4', '3', '20-12-06', 'Table 2', 'Y', '4', 'Pedal')
 

Я получаю эту ошибку: [описание ошибки]1

Заранее спасибо.

Комментарии:

1. Сообщение об ошибке здесь довольно ясно, проверьте свои внешние ключи. Кажется, он работает по назначению (блокирует вставку для защиты целостности БД) или ваш FK настроен неправильно.

2. На стороне примечания: '21-01-07' неоднозначно. Какой год, месяц, день? Используйте правильные литералы даты вместо простых строк: DATE '2021-01-07' для 7 января 2021 года.

Ответ №1:

MYSQL жалуется на FK, которого нет в родительской таблице, поэтому в вашем случае одно или несколько значений VerifyStaffID ( 1, 3, 4) не существует в родительской таблице (tblstaff)