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

问题描述 投票:1回答:1

我有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`));

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

你有什么想法的人,有什么不对吗?我使用的MySQL版本是:

mysql --version
mysql Ver 14.14  Distrib 5.7.12, for Win64 (x86_64)
mysql sql database
1个回答
7
投票

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

请参阅文档here

一个唯一索引,其中所有键列必须定义为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`));

(注意NULL之后缺乏BIGINT

© www.soinside.com 2019 - 2024. All rights reserved.