SORU
1 Aralık 2009, Salı


MySQL hata: anahtar uzunluğu olmadan anahtar özellikleri

Bir varchar bir birincil anahtar tablosu(255). Bazı durumlarda 255 karakter yeterli olmadığı ortaya çıkmıştır. Bir metin alanını değiştirmeyi denedim ama aşağıdaki hatayı alıyorum:

BLOB/TEXT column 'message_id' used in key specification without a key length

bu durumu nasıl düzeltebilirim?

edit: aynı zamanda birden çok sütun ile bileşik bir birincil anahtar olan bu tablo belirtmeliyim.

CEVAP
1 Aralık 2009, Salı


Hata MySQL BLOB veya METİN sütununun yalnızca ilk N karakter dizini olabilir, çünkü bu olur. Yani hata esas alındığında bir alan/sütun türü METİN veya BLOB veya bu ait METİN veya BLOB türleri gibi TİNYBLOB, MEDİUMBLOB, LONGBLOB, TİNYTEXT, MEDİUMTEXT ve LONGTEXT bunu denemeni yapmak gibi bir birincil anahtar veya dizin. Uzunluk değeri olmadan tam BLOB veya METİN ile, MySQL değişken ve dinamik bir boyut olarak sütun benzersizliğini garanti edemiyoruz. Dizin olarak BLOB veya METİN türlerini kullanırken, N değeri MySQL anahtar uzunluğunu belirlemek için sağlanmalıdır. Ancak, MySQL METİN veya BLOB anahtar uzunluğu sınırı desteklemiyor. METİN(88) sadece işe yaramaz.

Hata olur da açılır çalıştığınızda dönüştürmek bir tablo sütun METİN olmayan ve olmayan BLOB türü gibi VARCHAR ve NUMARALAMA METİN veya BLOB türü, sütun zaten tanımlanmış olarak benzersiz kısıtlama veya dizin. Alter Table SQL komutu başarısız olur.

Bu soruna çözüm METNİ kaldırmak veya dizin sütun veya benzersiz kısıtlama BLOB, ya da birincil anahtar olarak başka bir alan ayarlayın. Eğer bunu yaparsan, METİN üzerinde bir sınırlama isteyen veya BLOB sütun olabilir mi, bir ad sütunu yazın kullanmak ve uzunluk sınırı çalışın. Varsayılan olarak, bir ad sütunu 255 karakter ile sınırlıdır ve sınır örtülü olarak bildiriminden sonra ayraç değil mi, ben içinde belirtilmelidir.e İKİLİK(200) 200 karaktere uzun sınırı olacak.

Tablo METİN veya BLOB ilgili yazın kullanmak bile bazen Hata 1170 de görülebilir. Birincil anahtar olarak VARCHAR sütun belirtmek gibi bir durum ortaya çıkar, fakat yanlış uzunluğu veya karakter boyutunu ayarlayın. VARCHAR tek kabul 256 karakterler, bu yüzden bir şey gibi İKİLİK(512) güç MySQL için otomatik dönüştürme, İKİLİK(512) SMALLTEXT türü, daha sonra başarısız hata 1170 anahtar uzunluğu sütun olarak kullanılır birincil anahtar veya benzersiz veya benzersiz olmayan bir dizin. Bu sorunu çözmek için, bir şekil VARCHAR alan boyutu 256'dan daha az belirtin.

Referans: MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012
  • Megan Parken

    Megan Parken

    19 Temmuz 2009
  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009