Diferencia entre revisiones de «MySQL soporte unicode completo»

De MoodleDocs
(tidy up)
(update as English Docs 3.8)
 
(No se muestran 15 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
{{Entorno}}
{{Entorno}}
==UTF-8==
==UTF-8==


[[UTF-8]] es una codificación de caracteres que usa la mayoría de los sitios web. Codifica cada uno de los 1,112,064 puntos de código válidos. Para almacenar toda esta información se necesitan cuatro bytes. Los valores más populares están en la región de tres bytes. Por defecto, MySQL usa solamente una codificación de tres bytes  por lo que los valores en el rango de cuatro bytes no pueden almacenarse. Cualquier registro que contenga un caracter de cuatro bytes no se guardará.
[[UTF-8]] es una codificación de caracteres que usa la mayoría de los sitios web. Codifica cada uno de los 1,112,064 puntos de código válidos. Para almacenar toda esta información se necesitan cuatro bytes. Los valores más populares están en la región de tres bytes. Por defecto, MySQL usa solamente una codificación de tres bytes  por lo que los valores en el rango de cuatro bytes no pueden almacenarse. Cualquier registro que contenga un caracter de cuatro bytes no se guardará.
{{Urgente de traducir}}
MySQL si soporta UTF-8 completamente. Requiere que se configuren ciertos ajustes. A partir de Moodle 3.3 el valor por defecto será usar  [[UTF-8]] completo para [[MySQL]] y [[MariaDB]]. Las Bases de datos existentes seguirán corriendo con soporte parcial, pero se recomienda cambiar a soporte completo.


Moodle viene con un ''script'' de Interfaz por Línea de Comando (CLI) para convertir a UTF-8 completo para MySQL (y MariaDB). Antes de Moodle 3.3 esta herramienta de conversión solamentecambiaría la [https://en.wikipedia.org/wiki/Collation colación (''collation'')] hacia alguna variante de 'utf8_bin'. La [https://en.wikipedia.org/wiki/Collation colación] recomendada era 'utf8_unicode_ci'. Actualmente recomendamos 'utf8mb4_unicode_ci'. 'utf8mb4_unicode_ci' soporta caracteres de 4 bytes (utf8_unicode_ci solamente soporta caracteres de 3 bytes) por lo que los caracteres de cuatro bytes como los caracteres asiáticos y los [https://es.wikipedia.org/wiki/Emoji emojis] ahora deberían de estar completamente soportados.
MySQL si soporta UTF-8 de cuatro bytes completamente, pero requiere que se configuren ciertos ajustes de la base de datos. A partir de Moodle 3.3 el valor por defecto será usar  [[UTF-8]] completo para [[MySQL]] y [[MariaDB]]. Las Bases de datos existentes seguirán corriendo con soporte parcial, pero se recomienda cambiar a soporte completo.
 
Moodle viene con un ''script'' de Interfaz por Línea de Comando (CLI) para convertir a UTF-8 completo para MySQL (y MariaDB). Antes de Moodle 3.3 esta herramienta de conversión solamente cambiaría el [https://en.wikipedia.org/wiki/Collation cotejamiento (''collation'')] hacia alguna variante de 'utf8_bin'. La [https://en.wikipedia.org/wiki/Collation colación] recomendada era 'utf8_unicode_ci'. Actualmente recomendamos 'utf8mb4_unicode_ci'. 'utf8mb4_unicode_ci' soporta caracteres de 4 bytes (utf8_unicode_ci solamente soporta caracteres de 3 bytes) por lo que los caracteres de cuatro bytes como los caracteres asiáticos y los [https://es.wikipedia.org/wiki/Emoji emojis] ahora deberían de estar completamente soportados.


Este ''script'' intentará cambiar  las configuraciones de la tabla por defecto, la [https://en.wikipedia.org/wiki/Collation colación] de la Base de Datos y el conjunto de caracteres.
Este ''script'' intentará cambiar  las configuraciones de la tabla por defecto, la [https://en.wikipedia.org/wiki/Collation colación] de la Base de Datos y el conjunto de caracteres.
Línea 14: Línea 13:


* Las instalaciones nuevas de Moodle 3.1.5 y a partir de 3.2.2 en adelante usarán utf8mb4 por defecto.
* Las instalaciones nuevas de Moodle 3.1.5 y a partir de 3.2.2 en adelante usarán utf8mb4 por defecto.
* Los sitios que se actualicen a Moodle 3.1.5 o 3.2.2 pueden usar el ''script'' para actualizar a utf8mb4. En Moodle 3.3 se mostrará una advertencia de que la Base de datoss no está usando soporte [[UTF-8]] completo y sugerir moverse a utf8mb4, pero Usted podría elegir seguir usando utf8.
* Los sitios que se actualicen a Moodle 3.1.5 o 3.2.2 pueden usar el ''script'' para actualizar a utf8mb4. En Moodle 3.3, 3.4 y 3.5 se mostrará una advertencia de que la Base de datoss no está usando soporte [[UTF-8]] completo y sugerir moverse a utf8mb4, pero Usted podría elegir seguir usando utf8.


===Formato del archivo===
===Formato del archivo===


To allow for large indexes on columns that are a varchar, a combination of settings needs to be set. The file format for the system needs to be using "Barracuda". This allows for the row format to be set to "Compressed" or "Dynamic". To enable this setting see the upgrade steps listed below.
Para permitir índices grandes en columnas que son un, deben ajustarse varias configuraciones. El formato del archivo para el sistema necesita estar usando "Barracuda". Esto permite que el formato de fila se configure a "Compressed" o "Dynamic". Para habilitar esta configuración vea los pasos para actualizar enlistados debajo. Moodle no se instalará si Usted tiene formato grande habilitado sin el formato de archivo Barracuda.


===Archivo por tabla===
===Archivo por tabla===


To enable this setting see the upgrade steps listed below.
Para habilitar esta configuración vea los pasos para actualizar enlistados debajo.


===Large prefix===
===Prefijo Large (Grande)===


This in conjunction with the row format being either "Compressed" or "Dynamic" allows for large varchar indexes above 191 characters.
Esto, en conjunto con el formato de fila que sea, ya sea "Compressed" o "Dynamic", permite índices varchar grande arriba de 191 caracteres.
To enable this setting see the upgrade steps listed below.
Para habilitar esta configuración vea los pasos para actualizar enlistados debajo.


==Pasos para actualizar==
==Pasos para actualizar==


Most important: Please backup your database before making any changes or running the CLI script.
Muy importante: Por favor respalde su base de datos antes de hacerle cualquier cambio o de correr el ''script'' de la interfaz por línea de comando.


* Change configuration settings for MySQL (exactly the same for MariaDB). This step is optional. You can run the script and it will try and make these changes itself. If errors occur then try manually changing these settings as listed below.
* Cambie los ajustes de configuraciones para MySQL (exactamente lo mismo para MariaDB). Este paso es opcional. Usted puede correr el 'script' que intentará hacer por sí mismo estos cambios. Si ocurren errores entonces intente cambiar manualmente estas configuraciones conforme se enlistan debajo.
** On Linux based systems you will want to alter my.cnf. This may be located in '/etc/mysql/'.
** En sistemas basados en Linux Usted querrá alterar my.cnf. Esto puede estar localizado en '/etc/mysql/'.
** Make the following alterations to my.cnf:
** Haga las siguientes alteraciones a my.cnf:
<code>
<code>
[client]
[client]
Línea 43: Línea 42:
innodb_file_format = Barracuda
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_file_per_table = 1
innodb_large_prefix
innodb_large_prefix = 1


character-set-client-handshake = FALSE
character-set-client-handshake = FALSE
Línea 52: Línea 51:
default-character-set = utf8mb4
default-character-set = utf8mb4
</code>
</code>
* Restart your mysql server.
* Reinicie su servidor mysql.
* Run the CLI script to convert to the new character set and collation (requires Moodle 3.1.5, 3.2.2 or newer): '''php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci'''
* Corra el 'script' de la Interfaz por Línea de Comando para convertir al nuevo conjunto de caracteres y 'collation' (requiere Moodle 3.1.5, 3.2.2 o más nuevo):
<pre>
$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
</pre>
* Make sure to repair and optimize all databases and tables.
<pre>
mysqlcheck -u root -p --auto-repair --optimize --all-databases
</pre>
 
'''ADVERTENCIA: Para sitios grandes, este ''script'' podría ser lento. ¡Para sitios muy grandes podría tomar horas e inclusive días! Se le recomienda que descargue y reimporte sus datos de acuerdo a  [[Convirtiendo_su_base_de_datos_MySQL_a_UTF8#Convirtiendo_una_base_de_datos_que_contiene_tablas|esta guía]] '''
 
NOTA: En sitios muy grandes, esto puede tomar mucho tiempo para correr. Usted probablemente debería de establecer cuanto tiempo demoraría en una instalación de prueba antes de sacar de línea  a su sitio en vivo. En algunos casos Uted podría considerar hacer una descarga (dumping) y re-importar sus datos.
 
* Ajuste el Array (matriz) $CFG->dboptions en su '''config.php''' para asegurarse de que Moodle usa  la ''Collation'' correcta cuando se conecta con el servidor MySQL:
<pre>
$CFG->dboptions = array(
  &hellip;
  'dbcollation' => 'utf8mb4_unicode_ci',
  &hellip;
);
</pre>
 
Si Usted solamente tiene acceso a la línea de comandos de la base de datos (o algo parecido a phpmyadmin) Usted puede intentar los siguientes comandos SQL:
<code>
SET GLOBAL innodb_file_format = barracuda
 
SET GLOBAL innodb_file_per_table = 1
 
SET GLOBAL innodb_large_prefix = 'on'
</code>


The upgrade is now complete.
* Intente añadir algunos Emojis (por ejemplo. 😂💩) a su sitio Moodle para verificar que la actualización fue exitosa.


[[Categoría:Entorno|UTF-8]]
[[Categoría:Entorno|UTF-8]]

Revisión actual - 18:13 9 mar 2020

UTF-8

UTF-8 es una codificación de caracteres que usa la mayoría de los sitios web. Codifica cada uno de los 1,112,064 puntos de código válidos. Para almacenar toda esta información se necesitan cuatro bytes. Los valores más populares están en la región de tres bytes. Por defecto, MySQL usa solamente una codificación de tres bytes por lo que los valores en el rango de cuatro bytes no pueden almacenarse. Cualquier registro que contenga un caracter de cuatro bytes no se guardará.

MySQL si soporta UTF-8 de cuatro bytes completamente, pero requiere que se configuren ciertos ajustes de la base de datos. A partir de Moodle 3.3 el valor por defecto será usar UTF-8 completo para MySQL y MariaDB. Las Bases de datos existentes seguirán corriendo con soporte parcial, pero se recomienda cambiar a soporte completo.

Moodle viene con un script de Interfaz por Línea de Comando (CLI) para convertir a UTF-8 completo para MySQL (y MariaDB). Antes de Moodle 3.3 esta herramienta de conversión solamente cambiaría el cotejamiento (collation) hacia alguna variante de 'utf8_bin'. La colación recomendada era 'utf8_unicode_ci'. Actualmente recomendamos 'utf8mb4_unicode_ci'. 'utf8mb4_unicode_ci' soporta caracteres de 4 bytes (utf8_unicode_ci solamente soporta caracteres de 3 bytes) por lo que los caracteres de cuatro bytes como los caracteres asiáticos y los emojis ahora deberían de estar completamente soportados.

Este script intentará cambiar las configuraciones de la tabla por defecto, la colación de la Base de Datos y el conjunto de caracteres.

En resumen:

  • Las instalaciones nuevas de Moodle 3.1.5 y a partir de 3.2.2 en adelante usarán utf8mb4 por defecto.
  • Los sitios que se actualicen a Moodle 3.1.5 o 3.2.2 pueden usar el script para actualizar a utf8mb4. En Moodle 3.3, 3.4 y 3.5 se mostrará una advertencia de que la Base de datoss no está usando soporte UTF-8 completo y sugerir moverse a utf8mb4, pero Usted podría elegir seguir usando utf8.

Formato del archivo

Para permitir índices grandes en columnas que son un, deben ajustarse varias configuraciones. El formato del archivo para el sistema necesita estar usando "Barracuda". Esto permite que el formato de fila se configure a "Compressed" o "Dynamic". Para habilitar esta configuración vea los pasos para actualizar enlistados debajo. Moodle no se instalará si Usted tiene formato grande habilitado sin el formato de archivo Barracuda.

Archivo por tabla

Para habilitar esta configuración vea los pasos para actualizar enlistados debajo.

Prefijo Large (Grande)

Esto, en conjunto con el formato de fila que sea, ya sea "Compressed" o "Dynamic", permite índices varchar grande arriba de 191 caracteres. Para habilitar esta configuración vea los pasos para actualizar enlistados debajo.

Pasos para actualizar

Muy importante: Por favor respalde su base de datos antes de hacerle cualquier cambio o de correr el script de la interfaz por línea de comando.

  • Cambie los ajustes de configuraciones para MySQL (exactamente lo mismo para MariaDB). Este paso es opcional. Usted puede correr el 'script' que intentará hacer por sí mismo estos cambios. Si ocurren errores entonces intente cambiar manualmente estas configuraciones conforme se enlistan debajo.
    • En sistemas basados en Linux Usted querrá alterar my.cnf. Esto puede estar localizado en '/etc/mysql/'.
    • Haga las siguientes alteraciones a my.cnf:

[client] default-character-set = utf8mb4

[mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix = 1

character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci

[mysql] default-character-set = utf8mb4

  • Reinicie su servidor mysql.
  • Corra el 'script' de la Interfaz por Línea de Comando para convertir al nuevo conjunto de caracteres y 'collation' (requiere Moodle 3.1.5, 3.2.2 o más nuevo):
$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
  • Make sure to repair and optimize all databases and tables.
mysqlcheck -u root -p --auto-repair --optimize --all-databases

ADVERTENCIA: Para sitios grandes, este script podría ser lento. ¡Para sitios muy grandes podría tomar horas e inclusive días! Se le recomienda que descargue y reimporte sus datos de acuerdo a esta guía

NOTA: En sitios muy grandes, esto puede tomar mucho tiempo para correr. Usted probablemente debería de establecer cuanto tiempo demoraría en una instalación de prueba antes de sacar de línea a su sitio en vivo. En algunos casos Uted podría considerar hacer una descarga (dumping) y re-importar sus datos.

  • Ajuste el Array (matriz) $CFG->dboptions en su config.php para asegurarse de que Moodle usa la Collation correcta cuando se conecta con el servidor MySQL:
$CFG->dboptions = array(
  …
  'dbcollation' => 'utf8mb4_unicode_ci',
  …
);

Si Usted solamente tiene acceso a la línea de comandos de la base de datos (o algo parecido a phpmyadmin) Usted puede intentar los siguientes comandos SQL: SET GLOBAL innodb_file_format = barracuda

SET GLOBAL innodb_file_per_table = 1

SET GLOBAL innodb_large_prefix = 'on'

  • Intente añadir algunos Emojis (por ejemplo. 😂💩) a su sitio Moodle para verificar que la actualización fue exitosa.