@kirill-93

Как установить внешние ключи?

Здравствуйте, на действующем проекте есть 3 таблицы: artists(id, ...), tags(id...) и artists_tags(id, artist_id, tag_id).
Пытаюсь установить внешние ключи для таблиц.

Для таблицы artists все проходит хорошо, а вот для таблицы tags вот такая ошибка:
ALTER TABLE `artists_tags`
	ADD CONSTRAINT `FK_artists_tags_tags` FOREIGN KEY (`tag_id`) 
        REFERENCES `tags` (`id`) ON UPDATE CASCADE ON DELETE CASCADE;

/* Ошибка SQL (1452): Cannot add or update a child row: a foreign key constraint fails (`musical`.`#sql-1b7c_1`, CONSTRAINT `FK_artists_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) */

Поля все одинаковы. Причем ошибка появляется только на заполненных данными таблицами, я попробовал создать 3 таких же пустые таблицы, и на них внешние ключи установились без проблем.
Подскажите, что делать.
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
a foreign key constraint fails
Имеющиеся данные в таблицах не удовлетворяют ограничению внешнего ключа. Потому ключ повесить невозможно.
Поищите tag_id, для которых нет соответствия в tags.id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы