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

Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

我总是得到错误:

Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

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 东西。我使用它的原因是我下载了一个带有服务器的游戏源,这是必需的。

您试图定义的不仅仅是 "one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause"。具体来说,createTimedeathTime.

你不能那样做。™

问题出在这两行

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

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

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

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