Mysql 错误代码:1067。';的默认值无效;最后一次访问';

Mysql 错误代码:1067。';的默认值无效;最后一次访问';,mysql,mysql-workbench,Mysql,Mysql Workbench,尽管我没有指定默认值,但在mysql语句中仍会出现此错误。以前的回答说添加一个NOTNULL将修复它,但我仍然得到错误。奇怪的是,如果我切换“加入日期”和“上次访问”的行,我会得到相同的错误,除了“加入日期”。你知道为什么会出现这个错误吗?谢谢 CREATE TABLE user_info( user_id serial, oauth_provider VARCHAR(255) NOT NULL, oauth_id VARCHAR(255) NOT NULL, first_name VARCHA

尽管我没有指定默认值,但在mysql语句中仍会出现此错误。以前的回答说添加一个NOTNULL将修复它,但我仍然得到错误。奇怪的是,如果我切换“加入日期”和“上次访问”的行,我会得到相同的错误,除了“加入日期”。你知道为什么会出现这个错误吗?谢谢

CREATE TABLE user_info(
user_id serial,
oauth_provider VARCHAR(255) NOT NULL,
oauth_id VARCHAR(255) NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
date_of_birth date NOT NULL,
email VARCHAR(255) NOT NULL,
gender char NOT NULL,
date_joined timestamp NOT NULL,
last_visit timestamp NOT NULL,
account_enabled boolean NOT NULL,
CONSTRAINT user_info_pkey PRIMARY KEY (user_id)) ENGINE=InnoDB;

我使用您的代码和我的所有工作:

我使用您的代码和我所有的工作:

如果您使用的是MySQL<5.6,则不能有两个具有相同默认值的时间戳列

对于MySQL 5.5,请检查以下内容

表中的一个时间戳列可以将当前时间戳作为初始化该列的默认值,也可以将其作为自动更新值,或者两者兼而有之。不能将当前时间戳作为一列的默认值,而将自动更新值作为另一列的默认值

所以,如果你想有2列带有时间戳,试试这个

CREATE TABLE user_info(
user_id serial,
oauth_provider VARCHAR(255) NOT NULL,
oauth_id VARCHAR(255) NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
date_of_birth date NOT NULL,
email VARCHAR(255) NOT NULL,
gender char NOT NULL,
date_joined TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMPL,
last_visit TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
account_enabled boolean NOT NULL,
CONSTRAINT user_info_pkey PRIMARY KEY (user_id)
) ENGINE=InnoDB;

如果您使用的是MySQL<5.6,则不能有两个具有相同默认值的时间戳列

对于MySQL 5.5,请检查以下内容

表中的一个时间戳列可以将当前时间戳作为初始化该列的默认值,也可以将其作为自动更新值,或者两者兼而有之。不能将当前时间戳作为一列的默认值,而将自动更新值作为另一列的默认值

所以,如果你想有2列带有时间戳,试试这个

CREATE TABLE user_info(
user_id serial,
oauth_provider VARCHAR(255) NOT NULL,
oauth_id VARCHAR(255) NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
date_of_birth date NOT NULL,
email VARCHAR(255) NOT NULL,
gender char NOT NULL,
date_joined TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMPL,
last_visit TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
account_enabled boolean NOT NULL,
CONSTRAINT user_info_pkey PRIMARY KEY (user_id)
) ENGINE=InnoDB;

你的MYSQL版本是什么?也许你应该阅读MYSQL版本手册的这一页你正在使用的MYSQL版本是什么?也许你应该阅读MYSQL版本手册的这一页你正在使用的MYSQL版本是的,我正在使用5.7.11,所以你可能有不同的版本。当我有5.6版本的时候,它工作了。是的,我用的是5.7.11,所以你可能有一个不同的版本。当我拿到5.6分时,它成功了。