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)
(注意缺少NULL后BIGINT)