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
Do I need to change something in に複数の空の値を挿入する方法をアドバイスしてください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;
最後にすべてが明らかです。回答ありがとうございます