DBAtlas · Veritabanı operasyon atlası

1267: Illegal mix of collations

MySQL

Ne demek?

Bir karşılaştırma ya da birleştirme (JOIN, WHERE, UNION, CONCAT) işleminde, farklı collation'lara sahip iki dize bir araya getirildi ve MySQL hangi collation kurallarının uygulanacağını belirleyemedi.

Neden olur?

Genellikle farklı karakter kümesi/collation'a sahip sütunların (ör. utf8mb4_general_ci ile utf8mb4_unicode_ci, ya da latin1 ile utf8mb4) karşılaştırılması ya da bir sütun ile bağlantı (connection) collation'ı arasındaki uyumsuzluk. Farklı tablolar/veritabanları farklı varsayılanlarla oluşturulduğunda sık görülür.

Nasıl çözülür?

Karşılaştırılan tarafları aynı collation'a getirin: ifadeye COLLATE ile açık collation belirtin (ör. col1 = col2 COLLATE utf8mb4_unicode_ci) veya CONVERT(... USING ...) kullanın. Kalıcı çözüm için ilgili sütunları/tabloları tek bir tutarlı karakter kümesi ve collation'a dönüştürün. Bağlantı collation'ını (collation_connection) da hizalayın.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar