Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_

894 阅读3分钟

Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT 导出数据库表语句如下: mysqldump -u'ifly_ssp'-p'imsp_vcloud' ifly_cpcc_ad_basic T_MEDIA_INFO>/root/database/T_MEDIA_INFO.sql mysqldump -u'ifly_ssp' -p'imsp_vcloud' ifly_cpcc_ad_basic T_OTHER_PLAT>/root/database/T_OTHER_PLAT.sql 这个是在命令行中输入,不是在mysql中输入

然后在另一个数据库导入 source /home/htling/T_MEDIA_INFO.sql; 报错

image.png 查看建表语句如下,发现: CREATE TABLE T_MEDIA_INFO (   ID int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '媒体ID',   NAME varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '媒体名称',   NICKNAME varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '媒体别名',   JOIN_NAME varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '衔接名(给运营识别更好的识别应用名称)',   TYPE int(10) unsigned NOT NULL COMMENT '媒体类型ID',   PLATFORM_TYPE int(10) unsigned NOT NULL COMMENT '平台类型:1:android;2:ios;0:其他',   DOWNLOAD_ADDR varchar(1024) COLLATE utf8_bin DEFAULT NULL COMMENT '下载地址',   USER_ID int(10) unsigned NOT NULL COMMENT '媒体所属用户ID',   ADUNIT_NUM int(10) unsigned NOT NULL DEFAULT '0' COMMENT '广告位数目',   MEDIA_SHOW_ID varchar(8) COLLATE utf8_bin DEFAULT NULL COMMENT '媒体对外展示ID',   IS_DEL tinyint(1) DEFAULT '0' COMMENT ' 是否删除:0代表未删除,1 代表删除',   PACKAGE_NAME varchar(128) COLLATE utf8_bin NOT NULL COMMENT '包名',   NOTE varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT '应用描述',   FORBID_DESC text COLLATE utf8_bin NOT NULL,   VERIFY_STATUS int(4) NOT NULL DEFAULT '0' COMMENT '审核状态:0未提交,1审核中,2审核通过,3审核拒绝',   PLAT_STATUS int(4) DEFAULT NULL COMMENT '平台审核状态',   UPLOAD_DESC text COLLATE utf8_bin COMMENT '上传描述',   CREATE_TIME timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'  COMMENT '创建时间',   COMMIT_TIME timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '提交时间',   ONLINE_TIME timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '上线时间',   VERIFY_MARK varchar(256) COLLATE utf8_bin DEFAULT NULL COMMENT '审核备注',   FINAL_SCORE double NOT NULL DEFAULT '0' COMMENT '流量评价得分',   ACCESS_TYPE int(4) DEFAULT '0' COMMENT '媒体接入方式,0-sdk,1-api',   REGISTERED_FROM varchar(32) COLLATE utf8_bin DEFAULT 'voiceads' COMMENT '应用注册来源,默认voiceads',   APP_DOWNLOAD_URL varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '应用市场下载链接',   DAILY_ACTIVE_USER int(11) DEFAULT NULL COMMENT '日活跃用户数',   CROWD_KEYWORD varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '适用人群 用英文逗号隔开',   MEDIA_FLOW_TYPE tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '媒体流量类型 1:小媒体 2:大媒体',   IS_SPECIAL tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否是特殊媒体,{0 否,1是}',   UPDATE_TIME timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',   COOPERATE_TYPE tinyint(1) NOT NULL DEFAULT '1' COMMENT '媒体合作类型 1: 合作媒体 2: 自有媒体',   MEDIA_TYPE tinyint(4) NOT NULL DEFAULT '0' COMMENT '媒体类型0线上媒体 1 线下媒体',   MEDIA_QUALITY decimal(4,1) NOT NULL DEFAULT '2.5' COMMENT '媒体质量标注(默认2.5分)',   AUDIT_TYPE tinyint(2) NOT NULL DEFAULT '1' COMMENT '审核方式:1.后置(先投后审) 2.前置(先审后投) 默认1',   PRIMARY KEY (ID),   KEY IDX_NAME (NAME) USING BTREE,   KEY IDX_TYPE (TYPE) USING BTREE,   KEY IDX_PLATFORM_TYPE (PLATFORM_TYPE) USING BTREE,   KEY IDX_USER_ID (USER_ID) USING BTREE,   KEY IDX_CREATE_TIME (CREATE_TIME) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=14002 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='媒体基本信息表'; /*!40101 SET character_set_client = @saved_cs_client */;

image.png

解释如下: mysql单表多timestamp报错# 一个表中出现多个timestamp并设置其中一个为current_timestamp的时候经常会遇到 #1293 - Incorrect table definition; there can be only oneTIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATEclause

原因是当你给一个timestamp设置为on updatecurrent_timestamp的时候,其他的timestamp字段需要显式设定default值 但是如果你有两个timestamp字段,但是只把第一个设定为current_timestamp而第二个没有设定默认值,mysql也能成功建表,但是反过来就不行...

最后解决了