Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列的MySQL唯一约束不允许插入多个Null和empty。引擎=InnoDB_Mysql - Fatal编程技术网

列的MySQL唯一约束不允许插入多个Null和empty。引擎=InnoDB

列的MySQL唯一约束不允许插入多个Null和empty。引擎=InnoDB,mysql,Mysql,使用SHOW CREATE TABLE获取以下信息 ( `Number` int(11) NOT NULL AUTO_INCREMENT, `CompanyName` char(255) COLLATE utf8_unicode_ci NOT NULL, `RegistrationNumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, UNIQUE KEY `Number_2` (`Number`),

使用
SHOW CREATE TABLE
获取以下信息

 (      
  `Number` int(11) NOT NULL AUTO_INCREMENT,
  `CompanyName` char(255) COLLATE utf8_unicode_ci NOT NULL,
  `RegistrationNumber` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,

   UNIQUE KEY `Number_2` (`Number`),
   UNIQUE KEY `CompanyName` (`CompanyName`),
   UNIQUE KEY `RegistrationNumber` (`RegistrationNumber`)

 ) ENGINE=InnoDB AUTO_INCREMENT=280 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
RegistrationNumber
中,需要允许插入多个空值和空值

但是,获取错误
完整性约束冲突:密钥“RegistrationNumber”的1062重复条目“”

在这里可以看到,对于InnoDB,NULL不被视为唯一值

在这里,请阅读唯一约束允许空值

请告知如何在
RegistrationNumber
中插入多个空值我是否需要更改
RegistrationNumber varchar(255)COLLATE utf8\u unicode\u ci DEFAULT NULL,

或者使用
ENGINE=InnoDB
是不可能的?改成MyISAM。同样的错误

更新

哦。。。。发疯

$sql = "INSERT INTO 18_6_TransactionPartners (RegistrationNumber) VALUES";

$insertQuery = array();
$insertData = array();

foreach ($num_row_1 as $i => $row) {
$insertQuery[] = '(?)';

if ( (strlen($data_b[$i])) > 0 ) {
echo '(strlen($data_b[$i])) > 0<br>';
$insertData[] = $data_b[$i];
}
else {
echo '??? null??? <br>';
$insertData[] = 'NULL';
}
}
$sql=“插入18_6_TransactionPartners(RegistrationNumber)值”;
$insertQuery=array();
$insertData=array();
foreach($i=>$row的num\u行\u 1){
$insertQuery[]='(?)';
如果((strlen($data_b[$i]))>0){
echo'(strlen($data_b[$i])>0
; $insertData[]=$data_b[$i]; } 否则{ 回显'???空?
'; $insertData[]=“空”; } }
并获取
QLSTATE[23000]:完整性约束冲突:1062项“RegistrationNumber”的重复条目“NULL”

现在怎么了

需要将
$insertData[]=“NULL”
更改为
$insertData[]=NULL

最后,一切都清楚了。谢谢你的回答

但看起来您在列中插入了一个空字符串而不是null。这是不同的。在唯一列中不能有多个空字符串


0
不是
null
<代码>0
是一个值-零。但是
null
意味着没有值。

正如你所说

但看起来您在列中插入了一个空字符串而不是null。这是不同的。在唯一列中不能有多个空字符串


0
不是
null
<代码>0是一个值-零。但是
null
表示no值。

A
唯一约束允许多个
null
值。在数据库上下文中,空值实际上意味着
Null
,因为空字符串(或数字零等)是完全已知的值。
您可以使用并将空字符串替换为null(即
null(myValue),

唯一约束允许多个
null
值。在数据库上下文中,空值实际上意味着
null
,因为空字符串(或数字零等)是完全已知的值。
您可以使用并用null替换空字符串(即
null(myValue),

我尝试插入多个
0
并获取
SQLSTATE[23000]:完整性约束冲突:1062密钥注册号的重复条目“0”。我试图在mysql中导入excel文件内容
0
不是
null
0
是一个值-零。但是
null
表示没有值。谢谢。将进行实验(了解)…似乎开始明白了。如果要插入多个
NULL
,则可以插入。如果多个``或
0
,则无法插入。因此,请参阅解决方案,空字符串和
0
需要转换为
NULL
我尝试插入多个
0
并获取
SQLSTATE[23000]:完整性约束冲突:1062密钥注册号的重复条目“0”。我试图在mysql中导入excel文件内容
0
不是
null
0
是一个值-零。但是
null
表示没有值。谢谢。将进行实验(了解)…似乎开始理解。如果要插入多个
NULL
,则可以插入。如果多个``或
0
,则无法插入。因此,请参阅解决方案,即空字符串和
0
需要转换为
NULL
NULL
与空字符串或
0
不同。
NULL
NULL
.Period.如果您有这样的约束,请输入
null
值,不要为空或0,因为它们会产生约束失败。
null
与空字符串或
0
不同。
null
null
句点。如果您有这样的约束,请输入
null
值,不要为空或0,因为它们会产生约束失败。