Saya mencoba mengonversi DB saya untuk utf8mb4
mengikuti panduan ini . Saya telah menetapkan:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init-connect='SET NAMES utf8mb4'
collation_server=utf8mb4_unicode_ci
character_set_server=utf8mb4
skip-character-set-client-handshake
Tetapi nilai character_set_client
dan character_set_results
masih tidak akan berubah menjadi utf8mb4.
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
Apa yang saya lakukan salah? Bagaimana cara mengatur nilai-nilai itu ke utf8mb4?
\xampp\mysql\bin\my.ini
. Saya tidak dapat menjalankanmysqld --help --verbose 2> /dev/null | grep -A1 'Default options'
- karena memberikan kesalahan berikut:'grep' is not recognized as an internal or external command, operable program or batch file.
Saya baru dalam hal ini, jadi saya mungkin melakukan sesuatu yang salah.skip-character-set-client-handshake
di file konfigurasi Anda? Ini adalah opsi baris perintah, bukan variabel.character_set_client
,character_set_connection
,character_set_results
,collation_connection
ditampilkan sebagaiutf8
. Adakah ide mengapa ini tidak berhasil?Saya juga mengikuti panduan itu, namun masalah yang sama muncul lagi. Masalah sebenarnya terletak pada perintah yang digunakan untuk membuat DB karena dibutuhkan
DEFAULT CHARACTER
sebagai argumen dan jika itu tidak lulus saat eksekusi set karakter default dilewatkan yang tidakutfmb4
.Berikut adalah langkah-langkah yang saya ikuti untuk memperbaikinya:
Buat database dummy dengan
utf8mb4
set karakter.Salin struktur dan data aktual ke basis data dummy ini dari basis data aktual
mysqldump -uroot -proot_password your_db_name | mysql -uroot -proot_password your_db_name_dummy
Jatuhkan basis data saat ini
Buat database baru
Akhirnya, kembalikan struktur tabel dan data ke database asli
mysqldump -uroot -proot_password your_db_name_dummy | mysql -uroot -proot_password your_db_name
Jika Anda akan menggunakan prosedur yang disebutkan di atas maka pastikan untuk membaca dengan seksama baris yang disebutkan di bawah ini juga.
Prasyarat dan status quo saya:
mysql --version
mysql Ver 14.14 Distrib 5.7.22, untuk Linux (x86_64) menggunakan EditLine wrappercat /etc/my.cnf
Saya menggunakan klien java yang
'mysql:mysql-connector-java:5.1.30'
jdbc:mysql://ip.of.database:3306/your_db_name?zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=true&autoReconnect=true
sumber