MySQL:主键的所有部分必须是NOT NULL; 如果键中需要NULL,请改用UNIQUE

mus*_*cat 2 mysql sql database

我有MySQL的问题.我创建了名为'BucketList'的数据库,然后我尝试创建名为'tbl_user'的表,它看起来像这样:

CREATE TABLE `BucketList`.`tbl_user` (
  `user_id` BIGINT NULL AUTO_INCREMENT,
  `user_name` VARCHAR(45) NULL,
  `user_username` VARCHAR(45) NULL,
  `user_password` VARCHAR(45) NULL,
  PRIMARY KEY (`user_id`));
Run Code Online (Sandbox Code Playgroud)

之后我遇到了一个问题:"主键的所有部分必须为NOT NULL;如果键中需要NULL,请使用UNIQUE"

你有什么想法,怎么了?我使用的MySQL版本是:

mysql --version
mysql Ver 14.14  Distrib 5.7.12, for Win64 (x86_64)
Run Code Online (Sandbox Code Playgroud)

Fra*_*erZ 12

从MySQL 5.7开始,它不再支持主键的空值.

请参阅此处的文档:

唯一索引,其中必须将所有键列定义为NOT NULL.如果没有明确NOT NULL声明它们,MySQL就会隐式声明(并且默默地).一张桌子只能有一张PRIMARY KEY.

因此,如果要将user_id密钥用作主键,则密钥不能为空.您应该将其声明为不可为空:

CREATE TABLE `BucketList`.`tbl_user` (
  `user_id` BIGINT AUTO_INCREMENT,
  `user_name` VARCHAR(45) NULL,
  `user_username` VARCHAR(45) NULL,
  `user_password` VARCHAR(45) NULL,
PRIMARY KEY (`user_id`));
Run Code Online (Sandbox Code Playgroud)

(注意缺少NULLBIGINT)