获取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
需要允许插入多个 NULL 和空值。
但是得到错误Integrity constraint violation: 1062 Duplicate entry '' for key 'RegistrationNumber'
这里http://forums.mysql.com/read.php?22,53591,53591读到 InnoDB NULL 不被视为唯一值。
这里https://stackoverflow.com/a/1346776/2465936读到唯一约束允许空值。
请建议如何在中插入多个空值RegistrationNumber
是否需要更改某些内容RegistrationNumber varchar(255) COLLATE utf8_unicode_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';
}
}
并得到QLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'NULL' for key 'RegistrationNumber'
现在有什么问题?
需要更改$insertData[] = 'NULL'
为$insertData[] = NULL;
最后一切都清楚了。感谢您的回答