将较旧的MySQL数据库(5.6.10)导入5.6.12会产生错误

时间:2013-06-11 17:01:40

标签: mysql sequelpro

在Mac OS X Server上安装最新版本5.6.12之前,我创建了我认为是旧数据库的简单sql转储。现在我正在尝试导入文件,但它们产生的所有文件产生无穷无尽的语法错误。

错误示例:

[ERROR in query 9] 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=InnoDB AUTO_INCREMENT=6' at line 8
[ERROR in query 10] Table 'some.table' doesn't exist

任何提示?

提前致谢!

1 个答案:

答案 0 :(得分:1)

你回答了自己的问题:

  

问题是:TYPE = InnoDB。据我所知,它应该是ENGINE = InnoDB。 Mac上的Sequel Pro(1.0.2)默认生成一个带“TYPE”的SQL转储。

是的,这是不推荐使用的语法。

http://dev.mysql.com/doc/refman/5.1/en/create-table.html说:

  

注意
  较早的TYPE选项与ENGINE同义。自MySQL 4.0以来,TYPE已被弃用,但仍然支持MySQL 5.1中的向后兼容性(MySQL 5.1.7除外)。从MySQL 5.1.8开始,它会产生警告。它在MySQL 5.5中被删除。 您不应在任何新应用程序中使用TYPE,而应立即开始转换现有应用程序以使用ENGINE(请参阅MySQL 5.1.8发行说明。 )

因此该关键字自2006年以来已被弃用,自2010年起已从该产品中删除!

我发现此处已报告此错误:https://code.google.com/p/sequel-pro/issues/detail?id=1668

开发人员的回复是Sequel Pro使用SHOW CREATE TABLE来导出表定义。如果您的SQL_MODE =“MYSQL323”或“MYSQL40”,那么SHOW CREATE TABLE将使用过时的TYPE选项而不是正确的ENGINE选项。因此,您可以通过确保SQL_MODE未配置为与旧版MySQL的兼容性来解决此问题。