Mysqldump Дамп бази c външни ключове, PHPClub - клуб на разработчиците на PHP
mysqldump : Дъмп на база данни с външни ключове
За дъмп на база данни (тест) използвам:
Всичко работи отлично.
Но не е възможно да възстановите базата данни от получения sql дъмп. Базата данни използва InnoDB таблици с външни ключове. MySQL правилно се оплаква, че не може да създаде таблица с външен ключ препращащ към несъществуващо поле в друга таблица (кодът на родителската таблица може да бъде изхвърлен по-долу)
Как да създадете дъмп на такава база данни? (или използвайте правилно получения) Изглежда, че има някакъв ключ, който разрешава/забранява проверката на целостта на базата данни. Не мога да намеря. Кажете ми, моля.
Може би не наваксвам малко. Но защо е коментирано? Възможно ли е по някакъв начин да се създаде sql-dump с помощта на mysqldump, така че по-късно да не се променя - а просто да се даде на MySQL при възстановяване на базата данни?
И изобщо по темата ли е? от мана:
Когато използвате командата ALTER TABLE на MyISAM таблици, всички неуникални индекси се създават в отделен пакет (подобно на REPAIR). Това ще направи ALTER TABLE по-бърз, когато има множество индекси.
Започвайки с MySQL 4.0, горната функция може да бъде активирана изрично. Команда ALTER TABLE. DISABLE KEYS не позволява на MySQL да актуализира неуникални индекси на MyISAM таблици. След това можете да използвате командата ALTER TABLE. ENABLE KEYS за повторно създаване на липсващи индекси. Тъй като MySQL прави това със специален алгоритъм, който е много по-бърз от вмъкването на ключове един по един, заключващите ключове могат да осигурят значително ускоряване на големи масиви от вмъквания.
Очевидно единственият изход за InnoDB е:
За да улесните презареждането на дъмп файлове за таблици, които иматвръзки с външен ключ, mysqldump автоматично включва израз в изхода на дъмпа, за да зададе FOREIGN_KEY_CHECKS на 0 от MySQL 4.1.1. Това избягва проблеми с таблиците, които трябва да се презареждат в определен ред, когато дъмпът се презарежда. За по-ранни версии можете да деактивирате променливата ръчно в mysql, когато зареждате дъмп файла по този начин:
mysql> SET FOREIGN_KEY_CHECKS = 0; mysql> ИЗТОЧНИК dump_file_name mysql> SET FOREIGN_KEY_CHECKS = 1;
Това ви позволява да импортирате таблиците в произволен ред, ако дъмп файлът съдържа таблици, които не са правилно подредени за външни ключове. Той също така ускорява операцията по импортиране. FOREIGN_KEY_CHECKS се предлага от MySQL 3.23.52 и 4.0.3.