Mysql 我无法在外键中添加“null”

Mysql 我无法在外键中添加“null”,mysql,sql,null,foreign-keys,Mysql,Sql,Null,Foreign Keys,我创建了两个表,如下所示: CREATE TABLE `leiame` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `number` INT(10) NOT NULL, `title` VARCHAR(100) NOT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `download` ( `id` INT(10) NOT NULL AUTO_INCREMENT,

我创建了两个表,如下所示:

CREATE TABLE `leiame` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `number` INT(10) NOT NULL,
    `title` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`id`) )

CREATE TABLE `download` (
    `id` INT(10) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(100) NOT NULL,
    `id_leiame` INT(10) UNSIGNED NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `leia_id_fk` FOREIGN KEY (`id_leiame`) 
                            REFERENCES `leiame` (`id`) ON UPDATE CASCADE )
当我在下载时为id_leiame添加空值时,会发生以下错误:

无法添加或更新子行:外键约束“bd”失败。“下载”,约束“leia\u id\u fk”外键“id\u leiame”在更新级联时引用“leiame”`id`

我将id_leiame设置为NULL


我缺少什么?

正如其他人在评论中指出的那样,根据您正在执行的语句,您似乎插入了“null”,即包含null而不是实际null的字符串,即缺少值

您需要做的是一些语法不正确的事情

if($leiame == "")
   $crud->inserir("name,id_leiame", "'$name',null") << no single quotes!
else
   $crud->inserir("name,id_leiame", "'$name','$leiame'")

. 你能发布导致问题的DML吗?你确定你的插入是正确的。。。并且您不会尝试插入“null”而不是null。在kkm.download name中插入id_leame值'something',null;在我的机器上工作正常:-我插入'null'但不工作!DML代码:$crud=新crud‘下载’$crud->INSERIAME,id_leiame,$name,$leiame;你应该插入空。。。not'null'@Marcel:请在问题中添加您的代码,因为这似乎是问题的原因,null作为特殊值和'null'作为字符串之间的区别。您能提供准确的语句吗?Leia me,我是指您显式输入null而不是'null'的语句。或者您只是尝试插入“NULL”,即仍然是字符串,但大写!?我试过了,但没有成功错误是:无法添加或更新子行:外键约束bd.download失败,约束leia_id_fk外键id_leiame在更新时引用leiame id。错误已清除。原因尚不清楚。从目前为止您提供的所有代码来看,您似乎总是插入一个包含字符“n”“u”“l”“l”的字符串,而不是实际的空值,因此出现FK错误,因为该字符串在表leiname表中不存在。您需要做的是类似于“if$leiname==INSERT NULL else INSERT$leiname”这样的事情。我不能给你PHP代码,因为我对PHP了解不够