MySQL находит недопустимые внешние ключи

У нас есть база данных с несколькими сотнями таблиц. Таблицы с использованием foreign_keys используют INNODB.

Иногда мы переносим данные (отдельные таблицы с использованием mysqldump) между нашими базами разработки, этапа и производства. mysqldump отключает проверку внешнего ключа, чтобы упростить импорт данных.

Поэтому со временем некоторые из наших непродуктивных баз данных заканчиваются несколькими потерянными документами.

Я собирался написать script, который найдет и обнаружит внешние и внешние ключи для всей базы данных MySQL, недействительные (ключи, указывающие на отсутствующие записи).

Я знаю, что могу написать запрос для проверки каждой таблицы и fkey один за другим, но думал, что может быть инструмент для этого уже.

Я хотел бы проверить, прежде чем писать такой script, чтобы увидеть, есть ли там уже там.

Искал google немного... неожиданно я ничего не нашел.

Ответ 2

Если данные уже введены и вы не настроили ограничения fk или каскады для удаления родителя, тогда вы просто хотите:

SELECT * FROM children WHERE my_fk_id NOT IN (select id from parents);