在运行MySQL服务器5.1.51 (均为64位)的Windows 7计算机上,在迁移到5.5.10之前,我使用MySQL管理员备份了整个数据库。安装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应用程序(工作台、SQLYog)和命令行进行恢复,但都抛出了相同的错误。它还抛出几个警告,但是没有显示这些警告。
两个问题:
当然,
mysql.exe将所有警告和错误记录到文本文件中?发布于 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模式的方法:
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,所以可以这样做:
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”吗?
发布于 2011-04-01 22:10:28
您需要做的是使用"mysqldump“工具重复转储。这是唯一能够制造非无用转储的工具.其他工具(特别是GUI)尝试过,但是失败了,因为它们没有经过足够好的测试,特别是在这种情况下。
存放你的转储,然后用mysqldump做一个新的。使用来自5.5的mysqldump版本作为首选项。
https://stackoverflow.com/questions/5516550
复制相似问题