Mysqldump Дамп бази c зовнішніми ключами, PHPClub - клуб розробників PHP

mysqldump : Дамп бази із зовнішніми ключами

Для дампа бази (test) використовую:

Все чудово працює.

Але відновити базу з отриманого sql-дампа не вдається. У базі використовуються таблиці InnoDB із зовнішніми ключами. MySQL правомірно лається на те, що не може створити таблицю із зовнішнім ключем, що посилається на неіснуюче поле ін таблиці (код батьківської таблиці може йти в дампі нижче)

Як правильно створювати дамп такої бази? (або правильно використовувати отриманий) Начебто, був якийсь ключик, що включає/відключає перевірку цілісності БД. Ніяк знайти не можу. Підкажіть, плз.

Може, я не наздоганяю трохи. Але навіщо вона закоменчена? Чи можна якось mysqldump'ом створити sql-дамп, щоб потім його не модифікувати - а просто віддати MySQL при відновленні БД?

і взагалі, це у тему? з мана:

При використанні команди ALTER TABLE для таблиць MyISAM усі неунікальні індекси створюються в окремому пакеті (подібно до REPAIR). Завдяки цьому команда ALTER TABLE за наявності кількох індексів працюватиме швидше.

Починаючи з MySQL 4.0, вищезгадана можливість може бути активізована явно. Команда ALTER TABLE. DISABLE KEYS блокує MySQL оновлення неунікальних індексів для таблиць MyISAM. Після цього можна застосувати команду ALTER TABLE. ENABLE KEYS для відтворення недостатніх індексів. Так як MySQL робить це за допомогою спеціального алгоритму, який набагато швидший у порівнянні зі вставкою ключів один за одним, блокування ключів може дати істотне прискорення на великих масивах вставок.

Мабуть, для InnoDB єдиний вихід:

To make it easier to reload dump files for tables that haveзв’язки зовнішнього ключа, 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.