Cannot add or update a child row SQL
Я пытаюсь добавить новый объект в таблицу SQL, но оно отказывает и выдаёт ошибку:
"ER_NO_REFERENCED_ROW_2: Cannot add or update a child row: a foreign key constraint fails (lod.posts, CONSTRAINT uid FOREIGN KEY (id) REFERENCES users (id)
ON DELETE CASCADE ON UPDATE CASCADE)"
Я так понимаю, что ошибка заключается в том, что айди в двух таблицах не совпадает, но оно совпадает.
Вот сам запрос:
INSERT INTO posts(`title`, `desc`, `img`, `uid`, `cat`) VALUES ('sdas', '<p>dsadsd</p>', 7, 6, 'art')
Ошибка заключается в том, что id 6 не существует в users, но оно существует.
Доказательство:
Что делать?
Ответы (2 шт):
Ошибка "ER_NO_REFERENCED_ROW_2: Cannot add or update a child row: a foreign key constraint fails" означает, что при добавлении новой записи в таблицу "posts" вы пытаетесь использовать значение в колонке "uid" (которая является внешним ключом, ссылающимся на таблицу "users"), которое не существует в таблице "users".
Чтобы решить эту проблему, вам нужно убедиться, что в таблице "users" существует запись с id=6. Если эта запись существует, то возможно, что в запросе на вставку вы указали неправильные индексы колонок или неправильный тип данных. Проверьте, что вы указываете значения для каждой колонки в правильном порядке и что они соответствуют типу данных, ожидаемому в схеме таблицы.
Например, если тип данных колонки "uid" является целым числом, то вы должны указывать целое число, а не строку, и так далее. Убедитесь, что вы указываете значения для всех колонок, указанных в запросе, и что типы данных соответствуют типам данных, ожидаемым в схеме таблицы.
Если вы уверены, что указываете правильные значения и типы данных, то возможно, что в таблице "users" уже существует запись с id=6, но она была удалена с помощью оператора DELETE CASCADE, указанного в ограничении FOREIGN KEY. В этом случае вам нужно либо обновить значение внешнего ключа в таблице "posts" так, чтобы оно ссылалось на существующую запись в таблице "users", либо удалить ограничение FOREIGN KEY, чтобы избежать этой ошибки в будущем.
Внешний ключ говорит, что posts.id равен users.id, тогда как в запросе значение 6 пишется в поле posts.uid, а поле id вообще не упоминается.
Ещё раз. На всякий случай. Внешний ключ связывает поле id (две буквы). Запрос пишет значение в поле uid (три буквы).
