CREATE TABLE AlarmHistory
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
value DOUBLE NOT NULL,
startedStamp TIMESTAMP NOT NULL,
finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
);
尝试创建上面的表时,我收到以下错误:" SQL错误(1293):表定义不正确;在DEFAULT或ON UPDATE子句"中只能有一个TIMESTAMP列和CURRENT_TIMESTAMP。
我的问题是这是一个错误吗?因为可以肯定,我有两个TIMESTAMP列,但只有一个列具有默认定义。当我删除startedStamp时,我没有错误。
答案 0 :(得分:11)
根据MySQL手册5.5版,Automatic Initialization and Updating for TIMESTAMP
既不是
DEFAULT CURRENT_TIMESTAMP
也不是ON UPDATE CURRENT_TIMESTAMP
,它与指定DEFAULT CURRENT_TIMESTAMP
和ON UPDATE CURRENT_TIMESTAMP
相同。
CREATE TABLE t1 (
ts TIMESTAMP
);
然而,
使用常量,默认值是给定值。在这种情况下,该列根本没有自动属性。
CREATE TABLE t1 (
ts TIMESTAMP DEFAULT 0
);
所以,这应该有效:
CREATE TABLE AlarmHistory
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
value DOUBLE NOT NULL,
startedStamp TIMESTAMP DEFAULT 0 NOT NULL,
finishedStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
答案 1 :(得分:2)
这是MYSQL 5.5版本的限制。您需要将版本更新为5.6。
我在MYSQL中添加表
时遇到此错误表定义不正确;只能有一个TIMESTAMP列 在DEFAULT或ON UPDATE子句中使用CURRENT_TIMESTAMP我的新MYSQL
表看起来像这样。
create table table_name(col1 int(5)auto_increment primary key,col2 varchar(300),col3 varchar(500),col4 int(3),col5 tinyint(2), col6 timestamp默认current_timestamp,col7时间戳默认值 更新current_timestamp上的current_timestamp,col8 tinyint(1) 默认0,col9 tinyint(1)默认1);
经过一段时间阅读不同MYSQL版本和一些谷歌搜索的变化。我发现在MYSQL 5.6版本中有一些更改。
本文将帮助您解决此问题。 http://www.oyewiki.com/MYSQL/Incorrect-table-definition-there-can-be-only-one-timestamp-column