2011-10-13 16 views
5

Bir Mysqldump dosyadan tüm veritabanlarını geri yükleme ediyorum ve aşağıdaki hatayı alıyorum:HATA 1005 (HY000): tablo oluşturmak Can not 'db1.testtable' (errno: 121)

ERROR 1005 (HY000) at line 156: Can't create table 'db1.testtable' (errno: 121) 

SQL, mysqldump yardımcı programından oluşturulduğu için, SQL kodunda bir hata nasıl ortaya çıktı? Benim dump.sql içinde

alakalı satırlar şunlardır:

CREATE TABLE `testtable` (
    `username` varchar(255) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `emailaddress` varchar(255) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Teşekkürler, Jim

cevap

8

errno 121 yinelenen bir anahtar hatası anlamına gelir. Tablonun .frm dosyası silinmiş olsa da muhtemelen InnoDB iç veri sözlüğünde tablo zaten var. Tablo oluşturmada errno 121'in elde edilmesinin en yaygın nedeni budur. Bir başka olası sebep, yabancı anahtar kısıtlama isminde isim anlaşmazlığıdır. Kısıtlama adları, tablo adları gibi bir veritabanında benzersiz olmalıdır.

InnoDB, .err günlüğünde ne yazdırıyor?

+1

111013 9:30:47 InnoDB: Hata: tablo 'db1'.'Testtable' zaten InnoDB iç InnoDB: veri sözlüğünde bulunmaktadır. .frm dosyasını InnoDB: sildiniz mi ve DROP TABLE kullanmadiniz mi? DROP DATABASE InnoDB kullandınız mı: MySQL sürümünde InnoDB tabloları için <= 3.23.43? InnoDB: InnoDB kılavuzunun Kısıtlamalar bölümüne bakın. InnoDB: InnoDB'nin içinde yetim tabloyu InnoDB'ye bırakabilirsiniz: InnoDB tablosunu yaratırken aynı adı taşıyan başka bir InnoDB: veritabanı ve .frm dosyasının geçerli veritabanına kopyalanması. InnoDB: Sonra MySQL tablonun var olduğunu düşünüyor ve DROP TABLE InnoDB: başarılı. –

+0

@ user993052 Bu talimatların gayet açık olduğunu düşünüyorum! :-) – ManseUK

+0

** bold ** Hata: masa db1.testtable zaten InnoDB dahili InnoDB'de var: veri sözlüğü. ** bold ** ibdata1, ib_logfile0, ib_logfile1 dosyaları hakkında konuştuğumuzu mu varsayıyorum? Onları silmeyi ve yükü dump.sql'den sıfırdan başlatmayı deneyeceğim. –

İlgili konular