Saya memiliki database WordPress di mesin lokal saya yang ingin saya transfer ke phpMyAdmin yang dihosting di cPanel. Namun, ketika saya mencoba mengimpor database ke lingkungan, saya terus mendapatkan kesalahan ini:
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
Saya telah mencoba Google sekitar dan satu-satunya solusi yang dapat saya temukan adalah kesalahan satu phpmysql ini - # 1273 - # 1273 - Kolaborasi tidak dikenal: 'utf8mb4_general_ci' yang saat ini tidak banyak membantu. Saya sudah mencoba menghapus cookie tetapi tetap tidak berhasil. Tolong bantu!
mysql
wordpress
phpmyadmin
cpanel
Wairimu Murigi
sumber
sumber
Jawaban:
Saya memiliki masalah yang sama dengan semua server kami menjalankan versi MySQL yang lebih lama. Ini dapat diatasi dengan menjalankan skrip PHP. Simpan kode ini ke file dan jalankan memasukkan nama database, pengguna dan kata sandi dan itu akan mengubah susunan dari
utf8mb4/utf8mb4_unicode_ci
menjadiutf8/utf8_general_ci
sumber
mysqldump --compatible=mysql4
db-convert.php
mysqldump --compatible=mysql4
atau jawaban di bawah adalah opsi yang lebih baik. Saya tidak berpikir itu ide yang bijaksana untuk mengubah sesuatu seperti ini di situs langsung. Lebih baik mengekspor dalam format yang benar, atau jika itu bukan opsi, edit file yang diekspor.Teknik dalam posting ini berhasil untuk saya
1) Klik tab "Ekspor" untuk basis data
2) Klik tombol radio "Kustom"
3) Buka bagian berjudul "Opsi spesifik format" dan ubah dropdown untuk "Sistem basis data atau server MySQL yang lebih lama untuk memaksimalkan kompatibilitas keluaran dengan:" dari NONE ke MYSQL40.
4) Gulir ke bawah dan klik "GO".
Saya tidak yakin apakah ini menyebabkan hilangnya data, namun dalam satu kali saya mencobanya saya tidak melihat adanya. Tidak seorang pun yang merespons di forum yang ditautkan di atas.
Sunting 8/12/16 - Saya percaya mengekspor database dengan cara ini menyebabkan saya kehilangan data yang disimpan di widget Editor Visual Studio TinyMCE , meskipun saya belum menjalankan beberapa tes untuk mengonfirmasi.
sumber
Jika Anda sudah mengekspor
.sql
file, hal terbaik yang harus dilakukan adalah Menemukan dan Mengganti yang berikut jika ada di file Anda:utf8mb4_0900_ai_ci
untukutf8_unicode_ci
utf8mb4
untukutf8
utf8_unicode_520_ci
untukutf8_unicode_ci
Itu akan diganti
utf8mb4_unicode_ci
menjadiutf8_unicode_ci
. Sekarang Anda pergi ke phpMyAdmin cPanel Anda dan atur DB collationutf8_unicode_ci
melalui Operations> Collation .Jika Anda mengekspor ke
.sql
, lebih baik mengubah format tentang cara Anda mengekspor file. Simak jawaban Evster (ada di halaman yang sama dengan ini)sumber
sed -i.bak s/utf8mb4/utf8/g FILE_NAME
. Ini akan menemukan semua kemunculanutf8mb4
di FILE_NAME dan menggantinya denganutf8
saat menyimpan salinan file asli ke FILE_NAME.bak. Anda mungkin perlu men-tweak untuk menentukan koalisi yang tepat dalam kasus Anda, tetapi ini adalah awal :)vi dump.sql
dan kemudian di melalui melakukan ini::%s/uf8mb4/utf8/g
.utf8_0900_ai_ci
denganutf8_unicode_ci
saya menggunakan ini di linux:
lalu kembalikan file_anda.sql Anda
sumber
sed -i '' ....
berhasil.sed -i 's/utf8_0900_ai_ci/utf8_general_ci/g' your_file.sql
Wordpress 4.2 memperkenalkan dukungan untuk pengkodean karakter "utf8mb4" untuk alasan keamanan , tetapi hanya MySQL 5.5.3 dan yang lebih besar mendukungnya. Cara installer (dan updater) menangani ini adalah memeriksa versi MySQL Anda dan database Anda akan ditingkatkan ke utfmb4 hanya jika didukung .
Ini kedengarannya hebat secara teori tetapi masalahnya (seperti yang Anda temukan) adalah ketika Anda memigrasi database dari server MySQL yang mendukung utf8mb4 ke yang tidak. Sementara sebaliknya harus bekerja, itu pada dasarnya operasi satu arah.
Seperti yang ditunjukkan oleh Evster, Anda mungkin berhasil menggunakan fitur "Ekspor" PHPMYAdmin. Gunakan " Metode Ekspor: Kustom " dan untuk " Sistem basis data atau server MySQL yang lebih lama untuk memaksimalkan kompatibilitas keluaran dengan: " pilih dropdown " MYSQL 40 ".
Untuk ekspor baris perintah menggunakan mysqldump. Lihatlah bendera:
Catatan: Jika ada karakter 4-byte dalam database mereka akan rusak.
Terakhir, bagi siapa pun yang menggunakan plugin WP Migrate DB PRO yang populer, pengguna di utas Wordpress.org ini melaporkan bahwa migrasi selalu ditangani dengan benar tetapi saya tidak dapat menemukan yang resmi.
Saat ini, tampaknya tidak ada cara untuk keluar dari pembaruan basis data. Jadi jika Anda menggunakan alur kerja tempat Anda memigrasikan situs dari server atau localhost dengan MySQL> 5.5.3 ke yang menggunakan versi MySQL yang lebih lama, Anda mungkin kurang beruntung.
sumber
TYPE=MyISAM
yang dihapus pada v5.1. Lakukan pencarian dan ganti denganENGINE=MyISAM
. Saya tidak bisa melihat jalan keluar dengan menggunakanmysqldump
opsi output.Dalam kasus saya ternyata
server baru saya sedang berjalan
MySQL 5.5
,server lama sedang berjalan
MySQL 5.6
.Jadi saya mendapatkan kesalahan ini ketika mencoba mengimpor
.sql
file yang saya ekspor dari server lama saya.MySQL 5.5 tidak mendukung
utf8mb4_unicode_520_ci
, tetapiMySQL 5.6 tidak.
Memperbarui ke
MySQL 5.6
pada server baru memecahkan kesalahan pemeriksaan!Jika Anda ingin mempertahankan MySQL 5.5, Anda dapat:
- membuat salinan
.sql
file yang diekspor- mengganti instance
utf8mb4unicode520_ci
danutf8mb4_unicode_520_ci
... dengan
utf8mb4_unicode_ci
- mengimpor
.sql
file yang diperbarui .sumber
mysql-server-5.6
paket yang dapat Anda instal yang akan menghapus 5.5 untuk Anda secara otomatis).Ada baris di wp-config.php:
Jika Anda mengikuti petunjuk Markouver / Evster , jangan lupa untuk mengubah jalur ini di server produksi menjadi
untuk memperbaiki karakter 4 byte yang rusak
sumber
define('DB_COLLATE', 'utf8_general_ci');
juga. Ini membantu saya.Setelah penelitian lama saya telah menemukan solusi untuk di atas:
Pertama, Anda mengubah wp-config.php> Database DB_CHARSET default ke "utf8"
Klik tab "Ekspor" untuk basis data
Klik tombol radio "Kustom"
Buka bagian berjudul "Opsi spesifik format" dan ubah dropdown untuk "Sistem basis data atau server MySQL yang lebih lama untuk memaksimalkan kompatibilitas keluaran dengan:" dari NONE ke MYSQL40.
Gulir ke bawah dan klik go
Kemudian Anda aktif.
sumber
Sepertinya host Anda tidak menyediakan versi MySQL yang mampu menjalankan tabel dengan susunan utf8mb4.
Tabel WordPress diubah menjadi utf8mb4 dengan Versi 4.2 (dirilis pada 23 April 2015) untuk mendukung Emoji, tetapi Anda memerlukan MySQL 5.5.3 untuk menggunakannya. 5.5.3. dari Maret 2010, jadi biasanya harus tersedia secara luas. Bisakah Anda memeriksa apakah hoster Anda menyediakan versi itu?
Jika tidak, dan peningkatan tidak dimungkinkan, Anda mungkin harus mencari hoster lain untuk menjalankan versi WordPress terbaru (dan Anda harus selalu melakukannya untuk alasan keamanan).
sumber
Jadi saya memecahkan dengan cara ini, dari MySQL 5.6 ke MySQL 5.5:
(Opsional) Buat
.sql.gz
file:Penjelasan
Seperti dijelaskan dalam jawaban ini , ini hanya setara dengan opsi ini dari phpMyAdmin: "Sistem database atau server MySQL yang lebih lama untuk memaksimalkan kompatibilitas keluaran dengan:" pilih dropdown "MYSQL 40" .
Kami membutuhkan ini, untuk menyelesaikan masalah ini:
sumber
$ sed -i'' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
. Jika Anda ingin menyimpan salinan sepertidatabase_name.sql.bak
sebelum menggantikan:$ sed -i'bak' 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
sed
.--compatible=ansi
opsiSaya juga mengalami masalah ini. Solusi yang berhasil bagi saya adalah membuka database lokal dengan Sequel Pro dan memperbarui Encoding and Collation ke utf8 / utf8_bin untuk setiap tabel sebelum mengimpor.
sumber
Cara termudah untuk dilakukan adalah mengekspor database Anda ke
.sql
, buka di Notepad ++ dan "Cari dan Ganti"utf8mb4_unicode_ci
keutf8_unicode_ci
dan juga gantiutf8mb4
keutf8
. Juga jangan lupa untuk mengubah susunan basis data keutf8_unicode_ci
(Operasi> Kolasi).sumber
buka file sql pada Notepad ++ dan
ctrl + H.
Kemudian Anda "utf8mb4
" mencari dan "utf8
" ganti. Masalahnya akan diperbaiki kemudian.sumber