Fix phpMyAdmin Import SQL – Unknown collation: ‘utf8mb4_unicode_520_ci’

O problema de import via phpMyAdmin sau din SSH (cu linie de comanda pentru import) a bazelor de date sau arhivate, ce apare in special atunci cand se muta o baza de date de pe un server pe altul, ce nu foloseste aceleasi setari pentru encoding sau sunt versiuni diferite cu setari specifice in MySQL.

Error
SQL query:

CREATE TABLE `wp_termmeta` (
`meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`term_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
`meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
PRIMARY KEY (`meta_id`),
KEY `term_id` (`term_id`),
KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
MySQL said: Documentation

#1273 - Unknown collation: 'utf8mb4_unicode_520_ci'

Dupa aceasta eroare, importul unei de baze de date WordPress sau a altui CMS, se va opri subit.

Problema apare din cauza encoding-ului diferit, folosit de cele doua sisteme. In cazul de fata, “utf8mb4_unicode_520_ci” nu recunoscut, iar importul nu se poate face.

Rezolvare eroare import SQL prin phpMyAdmin sau SSH – Unknown collation: ‘utf8mb4_unicode_520_ci’

Metoda cea mai simpla este sa inlocuiti in fisierul .SQL, string-urile “utf8mb4” cu “utf8“. Pentru a face acest lucru, aveti la indemana phpMyAdmin, de unde sa descarcati fisierul baze de date pe PC. Inainte sa va apucati de modificari, asigurati-va o copie de rezerva a bazei de date. Backup-ul este intotdeauna indicat inainte de incepe sa modificam intr-o baza de date.

Sa spunem ca in scenariul nostru avem fisierul “nume_baza_de_date.sql” in care trebuie sa inlocuim “utf8mb4” cu “utf8“.. Metoda la indemna pentru multi administratori de sistem este sa faca aceasta modificare pe linux, folosind comanda “sed” pentru “find & replace“. Asadar, urcati fisierul pe un server linux, apoi executati liniile de comanda in directorul in care aveti fisierul .sql in care doriti sa faceti modificarile.

 sed -i 's/utf8mb4/utf8/g' nume_fisier.sql
 sed -i 's/utf8_unicode_ci/utf8_general_ci/g' nume_fisier.sql
 sed -i 's/utf8_unicode_520_ci/utf8_general_ci/g' nume_fisier.sql

Dupa executarea acestor linii de comanda, in fisierul .sql se vor inlocui “utf8mb4” cu “utf8”, “utf8_unicode_ci” cu “utf8_general_ci” si “utf8_unicode_520_ci” cu “utf8_general_ci”. Desigur, puteti face aceste modificari pe un Windows PC sau Mac, folosind un editor TXT in care sa deschideti fisierul .SQL.

Importati fisierul modificat prin intermediul phpMyAdmin.

Pasionat de tehnologie, scriu cu plăcere pe StealthSettings.com începând cu anul 2006. Am o bogată experiență în sistemele de operare: macOS, Windows și Linux, dar și în limbaje de programare și platforme de blogging (WordPress) și pentru magazine online (WooCommerce, Magento, PrestaShop).

2 thoughts on “Fix phpMyAdmin Import SQL – Unknown collation: ‘utf8mb4_unicode_520_ci’”

Leave a Comment