2016-11-01 4 views
1

Вот мой SQL:Ошибка команды SQL Insert

INSERT INTO film (film_id, title, description, release_year, language_id, original_language_id, 
rental_duration, rental_rate, length, replacement_cost, rating, special_features, last_update) 
VALUES ('1001','1 st Grade FBI Agent','An undercover FBI agent must pretend to be 
a 1st grade teacher to catch the bad guy', '2014','2','null', '5', '4.99', '123', '2014', 
'20.99', 'PG-13', 'Tailers'); 

Здесь ошибка я получаю, когда я запускаю его. Это предварительная база данных, которую я использую для задания для класса, и мне сказали вставить новую строку в таблицу фильмов.

Код ошибки: 1452. Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удается (sakilafilm, скованность fk_film_language_original FOREIGN KEY (original_language_id) Лит language (language_id) ON UPDATE CASCADE.)

+2

Вместо ''null'' вы, вероятно, имели в виду' null' (без одинарных кавычек) – sstan

+0

Проблема здесь очевидна. Вы помещаете 'NULL' как' original_language_id', которые нарушают ограничение внешнего ключа. Или, если вы разрешаете null в столбце, вы, вероятно, должны написать его как «NULL», а не «null» – Eric

+0

. Вы пытаетесь вставить запись в запись, которая ссылается на родительскую запись в таблице «Языки», которая не существует или никогда не существовало. Скорее всего, это проблема с данными, а не проблема с дизайном. –

ответ

0

Ваш SQL-запрос пытается ввести значение INSERT 'null' для поля original_language_id в таблице film.

Похоже, что это original_language_id является ИНОСТРАННЫМ КЛЮЧЕМ, который ссылается на language_id в таблице language и, скорее всего, является ПЕРВИЧНЫМ КЛЮЧОМ на этой таблице.

+0

Ah yup. Благодаря тонну! Ошибка новичков. – BoostedMonkey

1

Значение original_language_id должен соответствовать значению language_id для одной строки в таблице языков. Это требование связано с таблицей foreign key.

Если это значение является целым числом, оно не должно быть окружено кавычками.

0

Похоже, вы даете 'null' в качестве значения для original_language_id. Проверьте, имеет ли значение null значение в вашей языковой таблице. Если вы хотите вставить значение null ... напишите его как null, а не «null».

0

Похоже, что «original_language_id» является внешним ключом из таблицы «language», а значение, которое вы пытаетесь вставить. I '' 'null' в этом случае не находится в родительской таблице (языке).

+0

Ответ должен иметь некоторый код. – Bobby

0

Я вижу несколько проблем в вашем заявлении. Но чтобы ответить на заданный вопрос, посмотрите на таблицу «language». Значение, которое вы вставляете в original_language_id, должно быть одним из значений в столбце language.language_id (или null, см. Ниже).

Что касается других вещей, несколько пользователей уже прокомментировали нулевое значение. null - это ключевое слово и не должно быть в кавычках.

Кроме того, последние 4 значения, похоже, находятся в другом порядке, чем список полей.

Смежные вопросы