首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL服务器从5.1.51迁移到5.5.10引发错误1064后恢复转储文件

问MySQL服务器从5.1.51迁移到5.5.10引发错误1064后恢复转储文件
EN

Stack Overflow用户
提问于 2011-04-01 17:06:00
回答 2查看 7.3K关注 0票数 3

在运行MySQL服务器5.1.51 (均为64位)的Windows 7计算机上,在迁移到5.5.10之前,我使用MySQL管理员备份了整个数据库。安装5.5.10之后,我尝试恢复转储文件,但它引发了一个错误:

代码语言:javascript
复制
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应用程序(工作台、SQLYog)和命令行进行恢复,但都抛出了相同的错误。它还抛出几个警告,但是没有显示这些警告。

两个问题:

当然,

  1. ,你能帮我解决这个问题吗?我必须以某种方式编辑sql转储文件吗?不过,这很麻烦,因为它超过了3GB。我以为我遵循了MySQL文档中提到的所有升级步骤,所以现在我有点沮丧,害怕数据丢失。
  2. 在从命令行恢复时,如何使mysql.exe将所有警告和错误记录到文本文件中?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-01 17:27:47

意见1

MySQL在从前一个主要版本迁移数据时提供升级脚本。我通常不使用它们。每当我从一个主要版本迁移到另一个主要版本时,我都会这样做:

mysqldump除mysql模式之外的所有数据库。从主要版本到主要版本的mysql模式是不同的。

从重新安装MySQL 5.5.10开始

在MySQL 5.5.10中从mysqldumps (MySQL除外)加载所有数据库

那么mysql模式呢?你可以用一种非常特殊的方式把它扔掉。

这就是我对Linux所做的从mysql 5.1.51中转储MySQL模式的方法:

代码语言:javascript
复制
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命令。

由于您使用的是Windows,所以可以这样做:

代码语言:javascript
复制
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的客户端并运行

源C:\MySQLGrants51.sql

意见2

“错误1064 (42000):您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得正确的语法,以便使用near 'TYPE = MyISAM默认字符集latin1排序规则latin1_german1_ci;

此错误消息具有“TYPE=MyISAM”。那不应该读成“ENGINE=MyISAM”吗?

票数 2
EN

Stack Overflow用户

发布于 2011-04-01 22:10:28

您需要做的是使用"mysqldump“工具重复转储。这是唯一能够制造非无用转储的工具.其他工具(特别是GUI)尝试过,但是失败了,因为它们没有经过足够好的测试,特别是在这种情况下。

存放你的转储,然后用mysqldump做一个新的。使用来自5.5的mysqldump版本作为首选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5516550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档