Estoy tratando de convertir mi DB a utf8mb4
seguir esta guía . Yo he puesto:
[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
Pero el valor de character_set_client
y character_set_results
aún no cambiará a 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 |
+--------------------------+--------------------+
¿Qué estoy haciendo mal? ¿Cómo consigo esos valores establecidos en utf8mb4?
\xampp\mysql\bin\my.ini
. No pude ejecutarmysqld --help --verbose 2> /dev/null | grep -A1 'Default options'
, ya que da el siguiente error:'grep' is not recognized as an internal or external command, operable program or batch file.
Soy nuevo en estas cosas, por lo que podría estar haciendo algo mal.skip-character-set-client-handshake
en tu archivo de configuración? Es una opción de línea de comandos, no una variable.character_set_client
,character_set_connection
,character_set_results
,collation_connection
se muestra comoutf8
. ¿Alguna idea de por qué esto no funciona?También he seguido esa guía, sin embargo, el mismo problema apareció nuevamente. El problema real radica en el comando utilizado para crear la base de datos, ya que toma
DEFAULT CHARACTER
como argumento y si eso no se pasa durante la ejecución, se pasa un conjunto de caracteres predeterminado que no se pasautfmb4
.A continuación se detallan los pasos que seguí para solucionarlo:
Cree una base de datos ficticia con
utf8mb4
juego de caracteres.Copie la estructura y los datos reales a esta base de datos ficticia de la base de datos real
mysqldump -uroot -proot_password your_db_name | mysql -uroot -proot_password your_db_name_dummy
Descartar la base de datos actual
Crear nueva base de datos
Finalmente, vuelva a colocar la estructura de la tabla y los datos en la base de datos original.
mysqldump -uroot -proot_password your_db_name_dummy | mysql -uroot -proot_password your_db_name
Si va a utilizar el procedimiento mencionado anteriormente, asegúrese de leer detenidamente las líneas mencionadas a continuación.
Requisitos previos y mi status quo:
mysql --version
mysql Ver 14.14 Distrib 5.7.22, para Linux (x86_64) usando el contenedor EditLinecat /etc/my.cnf
Estoy usando un cliente Java que es
'mysql:mysql-connector-java:5.1.30'
jdbc:mysql://ip.of.database:3306/your_db_name?zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=true&autoReconnect=true
fuente