Проверка на нарушение ссылочной целостности - PullRequest
3 голосов
/ 16 сентября 2010

В моем процессе я делаю что-то вроде:

SET FOREIGN_KEY_CHECKS = 0;
LOAD DATA INFILE '/path/to/mytable.txt' INTO TABLE mytable;
SET FOREIGN_KEY_CHECKS = 1;

Теперь мне нужно проверить, что данные после этого импорта не нарушают ссылочную целостность.Я хотел бы сделать что-то вроде

check database all foreign_keys;

Существует ли подобная команда?Если нет, то как это сделать?

Среда: MySQL v5.1.xx с InnoDB

Спасибо

Ответы [ 2 ]

3 голосов
/ 17 сентября 2010

Ответ

Здесь - это код, который делает то, что вам нужно. Похоже, такой команды нет.

История

ОК, я не эксперт по MySQL, но целостность ссылок постоянно поддерживается, если вы ее не отключите. Вы не можете вставить строку в таблицу, которая нарушает ограничение, если вы сначала не удалили или не отключили ограничение. Нет необходимости «проверять» их.

Если вы их «отключили», то включение их приведет к проверке.

Это на самом деле совершенно неправильно и очень страшно. как минимум в 5,1

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

1 голос
/ 12 сентября 2012

Ссылка выше, к сожалению, мертва.

Сценарий, упомянутый в этом сообщении в блоге, хорошо показывает FK, на которые нет ссылок (хотя он также показывает их, когда FK обнуляется, поэтому может быть на законном основании нулевым, поэтому не всегда полезным!):

http://www.mysqlperformanceblog.com/2011/11/18/eventual-consistency-in-mysql/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...