MySQL 8 yedeğini MariaDB'ye aktarırken "Unknown collation" hatası
17 Ekim 2026Mehmet Arif ÇETİNER
Başka bir sağlayıcıdan aldığınız veritabanı yedeğini cPanel'de phpMyAdmin ile içe aktarırken şu hatayı görebilirsiniz:
#1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
Bu, yedeğin bozuk olduğu anlamına gelmez. Yedek MySQL 8 sunucusunda alınmıştır ve MySQL 8'e özgü bir karşılaştırma kuralı (collation) içerir. Sunucularımızda çalışan MariaDB bu kuralı tanımaz. Yedekteki ifadeyi MariaDB'nin de bildiği bir kuralla değiştirmek yeterlidir.
Çözüm 1: Yedek dosyasını düzenleyip yeniden içe aktarın
- Yedek dosyasını (.sql) bilgisayarınızda bir metin düzenleyiciyle açın. Dosya sıkıştırılmışsa (.sql.gz, .zip) önce açın.
- "Bul ve değiştir" ile
utf8mb4_0900_ai_ciifadesinin tamamınıutf8mb4_unicode_520_ciile değiştirin. - Dosyayı kaydedin ve phpMyAdmin'de İçe Aktar sekmesinden yeniden yükleyin.
Dosyada utf8mb4_0900_as_cs gibi başka bir _0900_ kuralı da varsa aynı şekilde utf8mb4_unicode_520_ci ile değiştirin.
Çözüm 2: Komut satırıyla (SSH erişiminiz varsa)
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_520_ci/g' yedek.sql
mysql -u kullanici_adi -p veritabani_adi < yedek.sql
Büyük yedeklerde sed geçici olarak dosya boyutu kadar ek disk alanı kullanır; işlemden önce disk kotanızı kontrol edin.
Neden utf8mb4_unicode_520_ci?
Hem MySQL hem MariaDB'de bulunan, Türkçe karakterleri ve emojileri destekleyen, büyük-küçük harf duyarsız bir karşılaştırma kuralıdır. Sıralama ve arama davranışı çoğu sitede MySQL 8'deki kuralla aynı sonucu verir.
Uygulamanızın ayarlarını da kontrol edin
WordPress'te wp-config.php içinde DB_COLLATE tanımlıysa ve utf8mb4_0900_ai_ci yazıyorsa satırı boş bırakın (define('DB_COLLATE', '');). Laravel'de config/database.php içindeki collation değeri aynı ifadeyi içeriyorsa utf8mb4_unicode_520_ci yapın.
Taşımayı bize bırakabilirsiniz
Bu adımlarla uğraşmak istemiyorsanız destek talebi açın; sitenizi ve veritabanınızı ekibimiz ücretsiz taşır.

