MySQL 错误: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP - 解决方法
MySQL 错误: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP - 解决方法
在MySQL中创建表时,如果试图将多个TIMESTAMP类型的列设置默认值为CURRENT_TIMESTAMP,就会出现“Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP”错误。
错误原因:
MySQL规定,在一个表中只能有一个TIMESTAMP类型的列具有CURRENT_TIMESTAMP属性。
解决方法:
可以通过修改SQL语句,将默认值为CURRENT_TIMESTAMP的设置应用到一个TIMESTAMP类型的列上。例如:
DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods` (
`Gid` int(0) NOT NULL AUTO_INCREMENT,
`Sid` int(0) NULL DEFAULT NULL,
`Gname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gbuyprice` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gsellprice` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gphoto` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gdescribe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`Gaudit` enum('0','1') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0',
`Gstatus` enum('0','1','2','3') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0',
`Gtime` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
`Gupdate_time` timestamp(0) NULL DEFAULT NULL,
`SELLusername` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
PRIMARY KEY (`Gid`) USING BTREE,
INDEX `Sid`(`Sid`) USING BTREE,
CONSTRAINT `Sid` FOREIGN KEY (`Sid`) REFERENCES `student` (`Sid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
ALTER TABLE `goods` MODIFY COLUMN `Gupdate_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0);
注:
- 将
Gupdate_time的默认值改为CURRENT_TIMESTAMP(0)并添加ON UPDATE CURRENT_TIMESTAMP(0)的约束。 - 确保只有一个TIMESTAMP类型的列具有CURRENT_TIMESTAMP属性。
通过以上修改,可以成功创建表,并且Gupdate_time列会在每次更新时自动更新为当前时间。
原文地址: https://www.cveoy.top/t/topic/oWvx 著作权归作者所有。请勿转载和采集!