Mysql tablo düzenlerken 1062 – Duplicate entry for key ‘id’ hatası

Alında sorun hatada belirtildiğinden farklıdır aslında kopya bir girdi yoktur girdi kontrol edildiğinde zaten bu görülmektedir, yoğun işlem gerçekleştirilen tablolarda Navicat, PhpMyAdmin yada gibi herhangi bir veritabanı yönetim sistemiyle tabloya yeni bir sütun eklerken yada tabloda herhangi bir değişiklik yaparken karşılaşılabilen sorunu aşağıdaki gibi LOCK ve UNLOCK yaparak tabloyu düzenleyebiliriz.

PHP için bir örnek verecek olursak aşağıdaki gibi uzun süren sorgular çalışır iken tabloda değişiklik yapamıyoruz.

$baglanti->query( "UPDATE `$table_name` set error = '1' WHERE uid IN (".implode(",", $uid).")" ) or die("<b>Mysql Error:</b> " . $baglan->error);

Çalışan yazılımı bir süreliğine durdurmak en güvenli çözüm olabilir ama uptime açısından iyi bir çözüm değil.

Bu sebeple yapılacak işlem için bir sql query oluşturulduktan sonra LOCK TABLES ve UNLOCK TABLES komutları kullanarak yapmak istediğimiz işlemi gerçekleştirebilirsiniz.

LOCK TABLES your_table WRITE;
ALTER TABLE your_table ADD COLUMN new_column INTEGER NULL AFTER surname;
UNLOCK TABLES;

 

Posted in SQL