2013-02-22 4 views
3

Я взял резервную копию базы данных с одного сервера и попытался восстановить ее на другом сервере.Восстановление базы данных в командной строке mysql

Mysql версия 5,5

Когда я пытаюсь восстановить базу данных с помощью следующей команды, экран -r

mysql -u root -p password mydb < mydump.sql 
ERROR 1005 (HY000) at line 356: Can't create table 'mydb.mytable' (errno: 150) 

Я понимаю, что это ForeignKey проблема ограничения. Файл дампа имеет следующий оператор внутри.

/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 

Но он по-прежнему не работает. Мой файл dumo очень большой - это размер, поэтому его открытие и редактирование невозможны. Итак, вместо добавления SET FOREIGN_KEY_CHECKS=0; в дампе, могу ли я установить его непосредственно в командной строке mysql следующим образом?

mysql> SET FOREIGN_KEY_CHECKS=0; 
... 
mysql> source "mydump.sql"; 
... 
mysql> SET FOREIGN_KEY_CHECKS=1; 

Будет ли это работать? Моя перезагрузка базы данных занимает несколько часов. Поэтому я прошу помощи здесь, прежде чем тратить часы на это.

Спасибо за помощь.

ответ

1

Обычно я просто подключу файлы в 2 sql - сначала однострочный с SET FOREIGN_KEY_CHECKS=0;, а затем файл дампа. Вам не нужно беспокоиться об установке его обратно; он будет действовать только для текущего сеанса (который будет завершен, когда файлы будут загружены).

FYI, вы также можете использовать sed -i 1i"SET FOREIGN_KEY_CHECKS=0;" dump.sql, если вы хотите постоянно добавлять эту строку без визуального редактирования файла.

+0

Я еще не пробовал. Но это помогает. благодаря – Slowcoder

Смежные вопросы