有时我们执行数据库的sql语句时,可能会遇到下面的错误
错误代码: 1293
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
错误代码: 1067
Invalid default value for 'createtime’
1.我们想要执行的sql语句:
/*==============================================================*/ /* Table: user */ /*==============================================================*/ CREATE TABLE USER ( user_id INT NOT NULL AUTO_INCREMENT COMMENT '医生id', username VARCHAR(100) COMMENT '用户名', PASSWORD VARCHAR(100) COMMENT '密码', realname VARCHAR(100) COMMENT '真实姓名', telephone VARCHAR(20) COMMENT '电话号码', birthday DATETIME COMMENT '生日', dept_id INT COMMENT 'id', user_type INT COMMENT '医生类型', active INT DEFAULT 1 COMMENT '是否有效,1 有效,0 失效', createtime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (user_id) );
2.但是由于mysql的版本不同,可能会出现下面的错误:
错误代码: 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
或者是:
错误代码: 1067 Invalid default value for 'createtime'
通俗的理解就是由于mysql的版本问题我们的那个createtime字段自动生成时间报错了。
3.解决办法:
把createtime字段的类型改为TIMESTAMP,但是其他时间(如birthday,并不需要自动生成的时间)还继续用DATETIME。
修改后可以正确执行的sql语句:
/*==============================================================*/ /* Table: user */ /*==============================================================*/ CREATE TABLE USER ( user_id INT NOT NULL AUTO_INCREMENT COMMENT '医生id', username VARCHAR(100) COMMENT '用户名', PASSWORD VARCHAR(100) COMMENT '密码', realname VARCHAR(100) COMMENT '真实姓名', telephone VARCHAR(20) COMMENT '电话号码', birthday DATETIME COMMENT '生日', dept_id INT COMMENT 'id', user_type INT COMMENT '医生类型', active INT DEFAULT 1 COMMENT '是否有效,1 有效,0 失效', createtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (user_id) );
这样就可以正常执行了,OK问题解决。