表定义不正确;在DEFAULT或ON UPDATE子句中只能有一个TIMESTAMP列和CURRENT_TIMESTAMP

时间:2015-06-01 16:48:30

标签: mysql timestamp

我总是得到错误:

  

表定义不正确;在DEFAULT或ON UPDATE子句中只能有一个TIMESTAMP列和CURRENT_TIMESTAMP

DROP TABLE IF EXISTS `characters`;
CREATE TABLE `characters`(
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `accId` int(11) NOT NULL,
  `charId` int(11) NOT NULL,
  `charType` int(11) NOT NULL,
  `level` int(11) NOT NULL,
  `exp` int(11) NOT NULL,
  `fame` int(11) NOT NULL,
  `items` varchar(128) NOT NULL,
  `hp` int(11) NOT NULL,
  `mp` int(11) NOT NULL,
  `stats` varchar(64) NOT NULL DEFAULT '"1,2,3,4,5,6,7,8"',
  `dead` tinyint(1) NOT NULL DEFAULT '0',
  `tex1` int(11) NOT NULL DEFAULT '0',
  `tex2` int(11) NOT NULL DEFAULT '0',
  `pet` int(11) NOT NULL DEFAULT '0',
  `fameStats` varchar(128) NOT NULL DEFAULT 'eNoVytkRgCAMRdGH4IIbgmsPdmNVNmZf5n7kzM0kksLjJN2V4b30vcHK1YYam9hCxxqh5zpQI0wwQ4IFMhRYYeNjpw444YIfA3kDIA',
  `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `deathTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `totalFame` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

这是我第一次使用MySQL的东西。之所以我使用它是因为我下载了一个带服务器的游戏源,这是必需的。

2 个答案:

答案 0 :(得分:0)

您正尝试在CURRENT_TIMESTAMP或ON DEFAULT子句中定义多于“{TIMESAMP列UPDATE”。具体而言,createTimedeathTime

你做不到。™

答案 1 :(得分:0)

问题与这两行隔离

  `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `deathTime`  timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

要消除错误,您需要修改其中一行以删除DEFAULT CURRENT_TIMESTAMP。 MySQL只允许以这种方式定义一个时间戳列。例如:

  `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `deathTime`  timestamp NOT NULL,

由于deathTime列定义为NOT NULL并且没有默认值,因此每当插入行时,您都需要为deathTime提供值。您可以使用BEFORE INSERT触发器为INSERT获取分配给该列的当前日期和时间。