在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
任何提示?
提前致谢!
答案 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的兼容性来解决此问题。