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