MySQL:#1293 - table 定义不正确

MySQL: #1293 - Incorrect table definition

使用 MySQL 5.6.17 在本地服务器中设计数据库和 Table 并导出到 *.sql 文件。

当尝试将 *.sql 文件导入 Live Server(MySQL 5.1.36) 时出现以下错误:

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

Understood the issue through this link

有什么方法可以在不更新 MySQL 版本的情况下将本地服务器的 *.sql 文件导入到 Live Server?

TABLE:

            CREATE TABLE 'currency' (
          'id' int(11) NOT NULL AUTO_INCREMENT,
          'currency_name' varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT
         NULL,
          'country' varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
          'currency' varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
          'created_by' int(11) NOT NULL,
          'created_on' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
          'status' int(1) NOT NULL DEFAULT '1',
          'modified_by' int(11) DEFAULT NULL,
          'modified_on' timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP,
          PRIMARY KEY ('id')) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;

注意:- Windows 服务器 运行 WAMP(本地服务器)和 QNAP(实时服务器)。

没有直接的方法,因为对于 MySQL 服务器 5.6.5 之前的任何版本,这都不是有效的 table 定义。

您可以手动编辑转储文件或使用 sedperl 之类的工具来修改有问题的行,或者您可以更改源服务器上的 table 定义...但是您的应用程序可能会期待这种行为,因此无法正常工作。

您还可以修改 table 定义,使其对 5.1 有效,只有一个自动时间戳,并使用触发器获得所需行为的其余部分。

当然,最好的课程是其中之一:

  • 将 5.1 服务器更新到 5.5,然后再更新到 5.6,或者

  • 在开发 5.1 服务器时,请始终在开发环境中使用 5.1,这样您就不会陷入这种依赖与旧部署不兼容的新功能的情况。 . 不过请记住,5.6 版中有一些非常重要的改进。