使用 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)。
答案 0 :(得分:1)
没有直接的方法,因为这不是MySQL Server 5.6.5之前的任何版本的有效表定义。
您可以手动或使用sed
或perl
等工具编辑转储文件以修改有问题的行,或者您可以更改源服务器上的表定义...但是然后您的应用程序,可能是期望这种行为,不能正常工作。
您还可以修改表定义以使其对5.1有效,只有一个自动时间戳,并使用触发器来获得所需的其余行为。
当然,最好的课程就是其中之一:
将5.1服务器更新为5.5,然后更新为5.6,或
在开发5.1服务器时,总是在开发环境中使用5.1,因此您不会遇到这样的情况,依赖于与旧部署不兼容的新功能......记住,虽然,版本5.6中发生了一些非常重要的改进。