数据库架构,默认值为NOW()

daG*_*vis 4 mysql time datetime mysql-error-1067

我有用户的数据库架构.看起来像...

CREATE TABLE `users` (

`id` int( 8 ) unsigned AUTO_INCREMENT,
`username` varchar( 255 ),
`password` varchar( 40 ),
`level` tinyint( 1 ) unsigned DEFAULT 1,
`time` datetime DEFAULT NOW(),
`email` varchar( 255 ),

PRIMARY KEY (`id`)

) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

有六个字段:id,用户名,密码,级别,时间,电子邮件,但我只想插入其中三个 - 当用户注册时:用户名,密码电子邮件.其余的将具有默认值.

问题是MySQL抛出错误:#1067 - 'time'的默认值无效.伙计们,有什么想法?

Ric*_*iwi 5

使用CURRENT_TIMESTAMP,并将列更改为时间戳.

它也是这样,但是有效(只要你可以使用时间戳) - 这是一个限制.

讨论:

  1. http://bugs.mysql.com/bug.php?id=27645
  2. http://forums.mysql.com/read.php?61,67640,67771#msg-67771

所以你的创造成了

CREATE TABLE `users` (
`id` int( 8 ) unsigned AUTO_INCREMENT,
`username` varchar( 255 ),
`password` varchar( 40 ),
`level` tinyint( 1 ) unsigned DEFAULT 1,
`time` timestamp DEFAULT CURRENT_TIMESTAMP,
`email` varchar( 255 ),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)