# 1273 - Bilinmeyen harmanlama: 'utf8mb4_unicode_520_ci'


157

Yerel WAMP sunucumda bir WordPress web sitem var . Ama veritabanını canlı sunucuya yüklediğimde hata alıyorum

#1273  Unknown collation: utf8mb4_unicode_520_ci

Herhangi bir yardım mutluluk duyacağız!


37
sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' file.sql
Nabil Kadimi

4
Aşağıdaki bul ve değiştir çözümlerinden oluşan bir denizde, ilk önce @ SherylHohman'ın cevabını kontrol etmeyi unutmayın - sadece sunucunuz bu harmanlamayı destekleyecek şekilde mariadb / mysql 5.6'ya yükseltin.
squarecandy


Burada ayrıca, her şeyi yaptığınızdan emin olmak için atmanız gereken tüm 3 adımı açıklayan hızlı bir rehber ( wpza.net/unknown-collation-utf8mb4_unicode_520_ci ) var.
WPZA

Bu çözümü # 1273 için kontrol edin - Bilinmeyen harmanlama: 'utf8mb4_0900_ai_ci' freakyjolly.com/…
Code Spy

Yanıtlar:


217

Bunu bularak çözebilirsiniz

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

senin içinde .sqldosya ve onu takas

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

28
Utf8mb4'ü koruduğu için Sabba ( stackoverflow.com/a/44122258/168309 ) tarafından verilen cevabı öneriyorum
Amir

5
@Sabba Keynejad'ın altındaki çözüm bence daha iyidir, mb4'ü koruduğundan, önce bunu denemelisiniz.
Maor Barazany

Not, bu SQL dosyasında birden çok yerde değiştirmek zorunda kaldı. Ayrıca aşağıda da stackoverflow.com/a/44122258/1436129 yapmam gereken yerler vardı .
aubreypwd

Aslında bu cevap, Sabba'nın bağlantılı yanıtı çalışmadığında işe yaradı. Muhtemelen MySql kurulum varsayılanlarım yüzünden. +1
Gitti Kodlama

: o şimdi hata veriyor, çalışmıyor COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4' , ben yerini almıştır utf8mb4_unicode_520_ciile utf8mb4_unicode_cive Sabba en Yanıt başına kadar, çalışıyor.
Haritsinh Gohil

286

Bu hatanın yerel sunucu ve canlı sunucunun MySQL'in farklı sürümlerini çalıştırması nedeniyle oluştuğuna inanıyorum. Bunu çözmek için:

  1. Metin dosyasını metin düzenleyicinizde açın
  2. Bul ve değiştir utf8mb4_unicode_520_ciileutf8mb4_unicode_ci
  3. Kaydet ve yeni bir mySql db'ye yükle

umarım yardımcı olurresim açıklamasını buraya girin


4
ASLA!!! Yaygın olduğu belgelenmiştir utf8mb4_unicode_520_civardır çok daha iyi UTF-8 desteği utf8mb4_unicode_ci! Sos: 520_ci'nin üstün olduğunu kanıtlayan görsel açıklama ile mysql.rjweb.org/doc.php/charcoll#best_practice: mysql.rjweb.org/utf8_collations.html
John

5
@John, Bağladığınız makaleler bu yorumu gerçekten savunmuyor. Onların "Böylece" öncüllerinden bile doğru şekilde bahsedilemez. Genel olarak tüm makale kötü yazılmış, ancak orada iyi bir bilgi var gibi görünüyor. 520 harmanlama, Unicode Harmanlama Algoritması'nın (UCA - sürüm 5.2.0) farklı ağırlıklarda daha yeni bir sürümünü kullanıyor, ancak "çok daha iyi UTF-8 desteğine sahip" olduğunu söylemek bir streçten daha fazlası gibi görünüyor.
Gremio

Bir Standartlar gövdesinin (Unicode) genellikle her yeni sürümü (5.20) eski bir sürümden (4.0) daha iyi hale getireceğini varsayalım.
Rick James

Bu en iyi cevap.
Niby

Tüm "utf8mb4_unicode_520_ci" oluşumlarının yerini aldığı için bu çözümü öneririm. Oysa savana sandip cevabı bazı bırakır.
Rakesh

49

Benim durumumda
yeni sunucum çalışıyordu MySQL 5.5,
eski sunucu çalışıyordu MySQL 5.6. Eski sunucumdan dışa aktardığım dosyayı
içe aktarmaya çalışırken bu hatayı aldım .sql.

MySQL 5.5 desteklemiyor utf8mb4_unicode_520_ci, ancak
MySQL 5.6 destekliyor .

MySQL 5.6Yeni sunucuda güncelleme, harmanlama hatasını çözdü!

MySQL 5.5'i korumak istiyorsanız, şunları yapabilirsiniz:
- dışa aktarılan .sqldosyanızın bir kopyasını oluşturun
- utf8mb4unicode520_cive utf8mb4_unicode_520_ci
... örneklerini değiştirin utf8mb4_unicode_ci
- güncellenmiş .sqldosyanızı içe aktarın .


2
Sunucunuz üzerinde tam kontrole sahipseniz, bunu yapmanın kesinlikle en iyi yoludur. Yeni sunucuyu eski sunucuyla eşleşecek şekilde yükseltin. Yeni sunucu konumunuzu yükseltme erişiminiz yoksa, find-replace yöntemi muhtemelen uygun olacaktır, ancak bu yükseltmeyi yapabileceğiniz her durumda, yapmanız gerekir.
squarecandy

1
5.6, 520'nin eklendiği zamandır .
Rick James

Bu doğru cevap olmalı. Diğer çözümlerin çoğu daha çok hack'lere benzer. @SherylHohman
sawyerrken

30

Sql dosyasını metin düzenleyicinizde açın;

1. Ara: utf8mb4_unicode_ci Değiştir: utf8_general_ci ( Tümünü Değiştir )

2. Ara: utf8mb4_unicode_520_ci Değiştir: utf8_general_ci ( Tümünü Değiştir )

3. Ara: utf8mb4 Değiştir: utf8 ( Tümünü Değiştir )

Kaydet ve yükle!


Bunun için çözüm bulduğum için gerçekten memnunum, günlerce bu # 1273 hatasını alıyorum ve bunun için bir çözüm bulamadım
flying-dev

Cankurtaran. Teşekkürler!
robbclarke


14

kolay değiştirme

sed -i 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql

2
sed -i '' 's/utf8mb4_unicode_520_ci/utf8mb4_unicode_ci/g' your_sql_file.sql
MacOS'ta


6

bul ve Değiştir:

utf8mb4_unicode_520_ci

ile

utf8_general_ci

tüm sql dosyasında


3
generalve utf8her ikisi de geriye doğru atılır.
Rick James

3

Partiye geç, ancak bunun bir WORDPRESSkurulumla olması durumunda :

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci

Phpmyadmin içinde, export method>Format-specific options (özel dışa aktarma)

Ayarlanır : MYSQL40

Şimdi içe aktarmayı denerseniz, şimdi başka bir hata mesajı alabilirsiniz:

1064 - You have an error in your SQL syntax; .....

Çünkü TYPEeşanlamlı eski seçenekENGINE MySQL 5.5'te kaldırılmış olmasıdır.

Açın .sqlDosyanızı tüm örnekleri arayın ve değiştirin

itibaren TYPE= hiçENGINE=

Şimdi ithalat sorunsuz geçmelidir.


3

Harmanlama hatası alma # 1273 - Bilinmeyen harmanlama: 'utf8mb4_unicode_520_ci', dışa aktardığınız MySQL sürümünün ve içe aktardığınız MySQL sunucumuzun farkından kaynaklanır. Temel olarak, yeni sürüm için Wordpress kütüphanesi, sitenizin hangi SQL sürümünün çalıştığını kontrol eder. MySQL sürüm 5.6 veya daha fazlasını kullanıyorsa, “utf8mb4_unicode_520_ci” adı verilen yeni ve geliştirilmiş bir Unicode Harmanlama Algoritması (UCA) kullanıldığını varsayar. WordPress sitenizi MySQL'in daha yeni bir 5.6 sürümünden MySQL'in daha eski, 5.6 öncesi bir sürümüne taşımadığınız sürece bu harikadır.

Bu sorunu çözmek için ya SQL dışa aktarma dosyanızı düzenlemeniz ve bir arama ve değiştirme yapmanız gerekecek, 'utf8mb4_unicode_520_ci' tüm örneklerini 'utf8mb4_unicode_ci' olarak değiştireceksiniz. Veya bir PHPMyAdmin'iniz varsa aşağıdaki adımları izleyin:

  1. Veritabanı için Dışa Aktar sekmesini tıklayın
  2. Özel radyo düğmesini tıklayın.
  3. Aşağıdakilerle çıktı uyumluluğunu en üst düzeye çıkarmak için Format sistemine özel seçenekler başlıklı bölüme gidin ve Veritabanı sistemi veya daha eski MySQL sunucusu için açılır menüyü değiştirin: NONE'dan MYSQL40'a.
  4. En alta gidin ve DEVAM'a tıklayın.

1

Benim durumumda utf8_general_ciböyle sed ile bunun yerine :

sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' MY_DB.sql 
sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' MY_DB.sql 

Bundan sonra, herhangi bir sorun olmadan içe aktarabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.