Восстановление файла дампа после миграции сервера MySQL с 5.1.51 на 5.5.10 выдает ошибку 1064 - PullRequest
3 голосов
/ 01 апреля 2011

На компьютере под управлением Windows 7, на котором работает сервер MySQL 5.1.51 (оба 64-битных), до перехода на 5.5.10 я сделал резервную копию всей своей базы данных с помощью MySQL Administrator. После установки 5.5.10 я попытался восстановить файл дампа, но он выдает одну ошибку:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE = MyISAM  DEFAULT CHARSET latin1 COLLATE latin1_german1_ci  ; SELECT co_n' at line 9"

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

Два вопроса:

  1. Конечно, вы можете помочь мне решить эту проблему? Нужно ли каким-либо образом редактировать файл дампа sql? Это громоздко, так как это более 3 ГБ. Я думал, что выполнил все шаги по обновлению, упомянутые в документации MySQL, так что теперь я немного расстроен и боюсь потери данных.

  2. При восстановлении из командной строки, как я могу сделать mysql.exe записывать все предупреждения и ошибки в текстовый файл?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

НАБЛЮДЕНИЕ # 1

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

mysqldump все базы данных, кроме схемы mysql.Схема mysql от основного выпуска к основному выпуску отличается.

Начните с новой установки MySQL 5.5.10

Загрузите все базы данных из mysqldumps (кроме mysql) в MySQL 5.5.10

А как насчет схемы mysql?Вы можете сделать это очень особым образом.

Это то, что я делаю для Linux, чтобы вывести схему mysql из MySQL 5.1.51:

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants51.sql

Это создаст весь SQL GRANT.Команды для воссоздания пользователей и прав доступа.

Поскольку вы используете Windows, вы можете сделать это:

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A > C:\MySQLGrants51.sql

Вам придется редактировать C: \ MySQLGrants51.sql в блокноте, чтобы каждыйстрока заканчивается точкой с запятой (;)

Теперь перейдите в клиент MySQL 5.5.10 и запустите

source C: \ MySQLGrants51.sql

НАБЛЮДЕНИЕ # 2

"ОШИБКА 1064 (42000): у вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем вашей версии сервера MySQL, для использования рядом с TYPE = MyISAM DEFAULT CHARSET latin1 COLLATE latin1_german1_ci;

Это сообщение об ошибке имеет тип "TYPE = MyISAM". Разве это не должно читаться как "ENGINE = MyISAM"?

0 голосов
/ 02 апреля 2011

Что вам нужно сделать, это повторить дамп, используя инструмент «mysqldump».Это единственный инструмент, который способен создавать бесполезные свалки.Другие (особенно GUI) инструменты TRY, но они терпят неудачу, потому что они недостаточно хорошо протестированы, особенно в такого рода сценариях.

Создайте свой дамп и создайте новый, используя mysqldump.Используйте версию mysqldump от 5.5, для предпочтения.

...