1

在 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

有小费吗?

提前致谢!

4

1 回答 1

1

你是在自问自答:

问题是: TYPE=InnoDB 。据我了解,它应该是 ENGINE=InnoDB 。Mac (1.0.2) 上的 Sequel Pro 默认会生成带有“TYPE”的 sql 转储。

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

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

注意
TYPE选项与ENGINE. TYPE自 MySQL 4.0 起已弃用,但仍支持 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 兼容来解决此问题。

于 2013-06-11T18:46:41.493 回答