MySQL:#1293 - 表定义不正确

时间:2015-05-13 03:39:08

标签: php mysql phpmyadmin

使用 MySQL 5.6.17 设计数据库和本地服务器表并导出到* .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 Server运行WAMP(本地服务器)和QNAP(Live Server)。

1 个答案:

答案 0 :(得分:1)

没有直接的方法,因为这不是MySQL Server 5.6.5之前的任何版本的有效表定义。

您可以手动或使用sedperl等工具编辑转储文件以修改有问题的行,或者您可以更改源服务器上的表定义...但是然后您的应用程序,可能是期望这种行为,不能正常工作。

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

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

  • 将5.1服务器更新为5.5,然后更新为5.6,或

  • 在开发5.1服务器时,总是在开发环境中使用5.1,因此您不会遇到这样的情况,依赖于与旧部署不兼容的新功能......记住,虽然,版本5.6中发生了一些非常重要的改进。