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;
报错

查看建表语句如下,发现:
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 */;

解释如下:
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也能成功建表,但是反过来就不行...

最后解决了

猜你喜欢

转载自blog.csdn.net/dongdouzin/article/details/80493454