Yinelenen bir değer eklendiğinde, bir istisna atamayan PDO ile ilgili garip bir sorunum var. Bu durumda bir hata bekliyordum.PHP PDO, yinelenen anahtar ekine istisna atar
ilgili kod: SQL veri ile
try
{
$db_conn = new PDO("mysql:host=".$config["database"]["hostname"].";charset=utf8", $config["database"]["username"], $config["database"]["password"], []);
$db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db_conn->exec(file_get_contents("some_file_with_data.sql");
}
catch(Exception $e)
{
// PDOException extends RuntimeException extends Exception so exceptions should be catched here
// however for the duplicate key entry it will not throw an exception
}
dosya şu şekilde, çok sayıda ekleme içerir: Tablodaki a
yılında
INSERT INTO `a` (`b`, `c`) VALUES
(1, 1),
(2, 2),
(3, 2);
INSERT INTO `a` (`b`, `c`) VALUES
(1, 1);
alan b
birincil anahtar olmak için ayarlanır. Aynı veriyi tam olarak aynı yapıya phpMyAdmin kullanarak eklediğimde şu hatayı alıyorum: #1062 - Duplicate entry '65533' for key 'PRIMARY'
Bu durumda PDO neden bir hata atmıyor? Hata modunu istisna olarak ayarladığımda bile mi?
Düzenleme
: Bu Bu genelliklePDO
ile hata olarak rapor edilmiştir bu özel tablonun
CREATE TABLE IF NOT EXISTS `a` (
`b` smallint(5) unsigned NOT NULL,
`c` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
http://stackoverflow.com/questions/11102644/pdo-exception-questions-how-to-catch-them –
: satır kümeleri (hata raporları yorumlardan alınmıştır) birer-birini işlemek için Bunu bir try/catch bloğunda zaten var, bunu açıklığa kavuşturmak için kodumu güncellememe izin verin. – Matthijs
Tablodaki tam kısıtlama nedir? – deceze