mysql 关于datetime设定默认值的一个问题

neilyqb 2014-10-31 10:28:19
求高手解答:

我在测试服务器上创建正常的表,脚本部署到开发环境时,结果执行创建数据库脚本时,
DROP TABLE IF EXISTS T_Inc_LimitList;
CREATE TABLE T_Inc_LimitList (
FunctionID int(11) NOT NULL AUTO_INCREMENT,
FunctionName varchar(30) NOT NULL DEFAULT '',
FunctionType int(11) NOT NULL DEFAULT '1',
CTIME datetime NOT NULL DEFAULT NOW(),
UTIME datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (FunctionID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
提示错误ERROR 1067 (42000): Invalid default value for 'CTIME'

我知道可以更改正常执行
CTIME datetime NULL,
UTIME timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
但是现在业务上需要保留CTIME 字段记录数据写入时系统时间,UTIME字段记录最后一次修改时间;

想请教是我语法有什么不对,还是有关于数据库的配置需要设定
附上:测试库和正式库 都是同样的系统环境 mysql5.6+centos6.4
...全文
52517 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
neilyqb 2014-10-31
  • 打赏
  • 举报
回复
UTIME DATETIME DEFAULT '2014-10-31', 这个要的是默认当前系统时间,不能固定某个日期
九月茅 2014-10-31
  • 打赏
  • 举报
回复
mysql> DROP TABLE IF EXISTS T_Inc_LimitList; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE T_Inc_LimitList ( -> FunctionID INT(11) NOT NULL AUTO_INCREMENT, -> FunctionName VARCHAR(30) NOT NULL DEFAULT '', -> FunctionType INT(11) NOT NULL DEFAULT '1', -> CTIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -> UTIME DATETIME DEFAULT '2014-10-31', -> PRIMARY KEY (FunctionID) -> ) ENGINE=INNODB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.01 sec) mysql>
九月茅 2014-10-31
  • 打赏
  • 举报
回复
mysql> CREATE TABLE T_Inc_LimitList ( FunctionID INT(11) NOT NULL AUTO_INCREMENT, FunctionName VARCHAR(30) NOT NULL DEFAULT '', FunctionType INT(11) NOT NULL DEFAULT '1', CTIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', UTIME DATETIME DEFAULT now(), PRIMARY KEY (FunctionID) ) ENGINE=INNODB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.01 sec) mysql> mysql> mysql> INSERT INTO T_Inc_LimitList(FunctionName,FunctionType) SELECT 'a',1; Query OK, 1 row affected (0.01 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> select * from T_Inc_LimitList; +------------+--------------+--------------+---------------------+---------------------+ | FunctionID | FunctionName | FunctionType | CTIME | UTIME | +------------+--------------+--------------+---------------------+---------------------+ | 1 | a | 1 | 2014-10-31 15:42:04 | 2014-10-31 15:42:04 | +------------+--------------+--------------+---------------------+---------------------+ 1 row in set (0.00 sec) mysql>
ACMAIN_CHM 2014-10-31
  • 打赏
  • 举报
回复
msyql 中应该使用 timestamp 类型,然后再设置 current_timestamp为默认值。 default now 能通过的可能性非常小,楼主用的什么版本的MYSQL?
rucypli 2014-10-31
  • 打赏
  • 举报
回复
升级开发环境的mysql版本到5.6即可
neilyqb 2014-10-31
  • 打赏
  • 举报
回复
高手指点下,有什么方法可以实现?

56,875

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧