Hata Kodu: 1005. 't tablo oluşturabilir '...' (hata: 150)
İnternette bu sorun için bir çözüm aradım ama hiçbir çözüm benim davam için çalıştım sorular ÇOK kontrol ettim.
Tabloda sira_no yabancı anahtar, metal_kod için oluşturmak istiyorum.
ALTER TABLE sira_no
ADD CONSTRAINT METAL_KODU FOREIGN KEY(METAL_KODU)
REFERENCES metal_kod(METAL_KODU)
ON DELETE SET NULL
ON UPDATE SET NULL ;
Bu komut verir:
Error Code: 1005. Can't create table 'ebs.#sql-f48_1a3' (errno: 150)
Başvurulan tablo için dizin ekleme çalıştım:
CREATE INDEX METAL_KODU_INDEX ON metal_kod (METAL_KODU);
METAL_KODU her iki tablo (karakter seti ve harmanlama) kontrol ettim. Ama bu soruna bir çözüm bulamadı. Herkes herhangi bir fikir var mı? Şimdiden teşekkürler.
EDİT: Burada metal_kod tablosu:
METAL_KODU varchar(4) NO PRI
DURUM bit(1) NO
METAL_ISMI varchar(30) NO
AYAR_YOGUNLUK smallint(6) YES 100
CEVAP
Hata Kodu: 1005 -- kodunuzda yanlış birincil anahtar bir başvuru yok
genellikle referans FK bir alan var sayesinde. yazım hatası hata var,ya da aynı olmalıdır edici olabilir, ya da alan-bir tür uyuşmazlığı var. FK-bağlı alanlar tanımlar tam olarak eşleşmesi gerekir.
Bilinen bazı nedenler olabilir :
- İki anahtar alanları tipi ve boyutu tam olarak uyuşmuyor. Eğer bir
INT(10)
örneğin, anahtar alanıINT(10)
INT(11)
TINYINT
olması gerekir. Sorgu Tarayıcı bazen görsel açıdan sadeceINT(10)
INT(11)
INTEGER
gösterecektir çünkü alan boyutu 12*CREATE
TABLE
*kullanarak tespit edilebilir. Ayrıca birSIGNED
olmadığını kontrol etmelisiniz ve diğerUNSIGNED
. İkisi de tam olarak aynı olmak zorunda. - Başvuru için çalıştığınız anahtar alan bir dizin ve/veya birincil anahtar değil. Eğer ilişki alanlardan biri birincil anahtar ise, bu alan için bir dizin oluşturmanız gerekir.
- Yabancı anahtar adı zaten var olan bir anahtarın bir kopyası. Yabancı anahtar adı veritabanı içinde benzersiz olup olmadığını kontrol edin. Sadece bu test için anahtar senin adının sonuna bir kaç rastgele bir karakter ekleyin.
- Veya tablo her ikisini de
MyISAM
bir tablo. Yabancı anahtarları kullanmak için tablolarInnoDB
olmalıdır. Eğer her iki tabloMyISAM
(aslında, o zaman bir hata iletisi - sadece anahtar yaratmayacağını alamazsınız.) Sorgu Tarayıcıda, tablo türünü belirtebilirsiniz. - 23*
DELETE
SET
NULL
*, ama ilgili anahtar alanı 27*NULL
*ayarlanmış bir çağlayan belirttiniz. Ya da Çağlayan değiştirerek veya alanıNULL
değerleri izin ayarlayarak düzeltebilirsiniz. - Karakter seti ve Harmanlama seçenekleri anahtar sütunları için tablo düzeyi gibi bireysel saha seviyesi de aynı olduğundan emin olun.
- Varsayılan değeri (ıe varsayılan=0) yabancı anahtar sütunu var
- İlişki alanlardan biri (bileşik) Birleşik anahtar parçası ve kendi bireysel dizin yok. Alan bileşik anahtar bir parçası olarak bir dizin olsa bile, bir kısıtlama olarak kullanmak için sadece bir anahtar alanı için ayrı bir dizin oluşturmak gerekir.
ALTER
deyiminde sözdizimi bir hata var ya da ilişki içinde alan adları yanlış yazmış- Yabancı anahtar adı 64 karakter en fazla uzunluğu aşıyor.
daha fazla ayrıntı için başvurun : MySQL Error Number 1005 Can’t create table
HATA: Hata 1005:'t tablo oluştura...
Hata Etki alanı=NSURLErrorDomain Kodu=...
MySQL:'t tablo oluşturabilir (hat...
Neden yok C# statik bir yöntem bir örn...
Simülatör hata kodu 4 FBSSystemService...