为什么可空列在插入语句中不采用空值?

时间:2019-02-10 15:31:25

标签: mysql mariadb

我目前有一个包含null列的表,但是在执行插入语句时,MySQL数据库会抛出一个错误,提示#1048 - Column 'admi_name' cannot be null

这是表查询:

    drop table if exists `tbl__users`;

    create table `tbl__users`(
    `user_email` varchar(256) not null,
    `user_last_name` varchar(256) not null,
    ...
    `user_bank_iban` varchar(32) not null,
    `admi_name` varchar(128) null,  -- Admin that approved the account
    constraint PK__USERS primary key (`user_email`),
    constraint FK__USERS__ADMINS foreign key (`admi_name`) references `tbl__admins` (`admi_name`)
    );

执行admi_name为null的插入语句会引发错误,我的操作是否有问题?以前没有发生这种情况,因为我能够在admi_name为空的情况下插入值,但是突然之间MySQL表示这是错误的。

此外,我知道列数据类型是错误的,请不要紧记。

当我调用具有插入语句的存储过程时遇到了这个问题。由于错误指向插入语句,因此我尝试了查询

    insert into `tbl__users` (`user_email`,
    `user_last_name`,
    ...,
    `admi_name`) values ('john@doe.com', 'Doe', ... , null);

查询仍然引发错误#1048 - Column 'admi_name' cannot be null。仍然不知道错误是什么。

我遇到的一件奇怪的事情是,如果我在admi_name上放置一个有效值,然后执行更新查询,将admi_name列更改为null,该查询将顺利进行。我还尝试在没有任何运气的情况下在更简单的表设计上复制该问题。

0 个答案:

没有答案