首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:#1293 -不正确的表定义

MySQL:#1293 -不正确的表定义
EN

Stack Overflow用户
提问于 2015-05-13 03:39:07
回答 1查看 488关注 0票数 1

使用MySQL 5.6.17设计了本地服务器数据库和表,并导出为*.sql文件。

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

代码语言:javascript
复制
#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?

表:

代码语言:javascript
复制
            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 )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 12:40:24

没有一种直接的方法可以做到这一点,因为这不是MySQL服务器5.6.5之前的任何版本的有效表定义。

您可以手工编辑转储文件,或者使用像sedperl这样的工具来修改违规行,或者更改源服务器上的表定义.但是,您的应用程序(想必是期望这种行为)将无法正常工作。

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

当然,最好的办法是:

  • 将5.1服务器更新为5.5,然后更新为5.6,或
  • 在为5.1服务器进行开发时,请始终在开发环境中使用5.1,这样您就不会依赖与旧部署不兼容的新特性。不过,请记住,版本5.6中出现了一些相当重要的改进。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30205245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档