錯誤資訊:
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause:
sql陳述句:
CREATE TABLE sckill (
seckill_id BIGINT NOT NULL AUTO_INCREMENT
COMMENT '商品庫存id',
name VARCHAR(120) NOT NULL
COMMENT '商品名稱',
number INT NOT NULL
COMMENT '庫存數量',
start_time TIMESTAMP NOT NULL
COMMENT '秒殺開始時間',
end_time TIMESTAMP NOT NULL
COMMENT '秒殺結束時間',
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
COMMENT '創建時間',
PRIMARY KEY (seckill_id),
KEY idx_start_time(start_time),
KEY idx_end_time(end_time),
KEY idx_create_time(create_time)
)
ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARSET = utf8
COMMENT '秒殺庫存表';
錯誤資訊說的是timestamp只能有一列為current_timestamp,但陳述句中確實只有一列,為什么還報錯?
uj5u.com熱心網友回復:
用的什么版本?現在的版本應該沒這個限制,而且也測驗過你的陳述句確實沒問題
uj5u.com熱心網友回復:
貌似5.5之前的版本存在這個問題 之后就沒了uj5u.com熱心網友回復:
把 create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 這條陳述句放在start_time 前面就可以了,原因是mysql會默認為表中的第一個timestamp欄位(且設定了NOT NULL)隱式設定DEFAULAT CURRENT_TIMESTAMP。所以說上例那樣的設定實際上等同于設定了兩個CURRENT_TIMESTAMP,因此而報錯,調整之后就可以了。
uj5u.com熱心網友回復:
老版本還有這個破規矩啊轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/118029.html
標籤:MySQL
上一篇:報錯怎么改啊
