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.
Muito obrigado por compartilhar a informação. Funcionou perfeitamente.
salvou o dia, kkkk valeu!