1267: Illegal mix of collations
MySQLNe 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.
Aynı motorda diğer kayıtlar
- 3948Loading local data is disabled; this must be enabled on both the client and server sides
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key
- 1055Expression not in GROUP BY (only_full_group_by)
- 1030Got error N from storage engine
- 1197Multi-statement transaction required more than 'max_binlog_cache_size'
- 1785Statement violates GTID consistency
- 3024Query execution was interrupted, maximum statement execution time exceeded