Mysql 为什么可为null的列在insert语句上不接受null值?

Mysql 为什么可为null的列在insert语句上不接受null值?,mysql,mariadb,Mysql,Mariadb,我目前有一个表有一个null列,但在执行insert语句时,MySQL数据库抛出一个错误,表示\1048-列'admi\u name'不能为null 以下是表查询: drop table if exists `tbl__users`; create table `tbl__users`( `user_email` varchar(256) not null, `user_last_name` varchar(256) not null, ...

我目前有一个表有一个
null
列,但在执行insert语句时,MySQL数据库抛出一个错误,表示
\1048-列'admi\u name'不能为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的情况下执行insert语句会引发错误,我所做的是否有问题?这以前没有发生过,因为我能够在
admi_name
为空的位置插入值,但突然MySQL说这是错误的

另外,我知道列数据类型是错误的,现在不管怎样

我在调用具有insert语句的存储过程时遇到了这个问题。因为错误指向insert语句,所以我尝试了查询

    insert into `tbl__users` (`user_email`,
    `user_last_name`,
    ...,
    `admi_name`) values ('john@doe.com', 'Doe', ... , null);
查询仍然抛出错误
#1048-列'admi_name'不能为null
。仍然不知道错误是什么


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

admi_name
在表
tbl__管理员
上不能
NULL
?是的。不将
null
作为输入编辑的可空列:表是
tbl\u用户
为什么不能为空?我不明白你的问题。@MacGyver问题是为什么我不能将
null
插入一个应该允许
null
作为值的列中。
null
应该出现在该列中的原因是,如果该帐户尚未获得管理员批准,则应该存在一个
null
管理员帐户。一旦用户获得批准,管理员帐户才能出现在该栏中。我希望您有完整的安全有效的证书,可以保存银行交易详细信息?表
tbl\u admins
上的
admi\u name
不能为
NULL
?是的。不将
null
作为输入编辑的可空列:表是
tbl\u用户
为什么不能为空?我不明白你的问题。@MacGyver问题是为什么我不能将
null
插入一个应该允许
null
作为值的列中。
null
应该出现在该列中的原因是,如果该帐户尚未获得管理员批准,则应该存在一个
null
管理员帐户。一旦用户被批准,只有这样,管理员帐户才能在该栏中。我希望您有完整的安全和有效的证书,可以保存银行交易的详细信息?