MySQL Unicode Unterstützung: Unterschied zwischen den Versionen

Aus MoodleDocs
Wechseln zu:Navigation, Suche
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Servereinstellungen}}
{{Servereinstellungen}}
{{Zum Überarbeiten}}
{{Neu}}
==UTF-8==
==UTF-8==
UTF-8 ist ein Zeichensatz, den die meisten Webseiten verwenden. Dieser Zeichensatz codiert 1 112 064 gültige Zeichen. Um diese Zeichen zu kodieren, werden 4 Byte benötigt. Die am häufigsten vorkommenden Zeichen können mit 3 Bytes kodiert werden. MySQL verwendet standardmäßig nur 3 Bytes zum Kodieren, so dass Zeichen, die mit 4 Bytes kodiert werden (z.B. asiatische Schriftzeichen und Emojis), nicht gespeichert werden können. Alle Versuche, in einem Moodle-Text ein 4 Byte Zeichen einzugeben, führen daher zu einem Moodle-Datenbank-Fehler.
UTF-8 ist ein Zeichensatz, den die meisten Webseiten verwenden. Dieser Zeichensatz codiert 1 112 064 gültige Zeichen. Um diese Zeichen zu kodieren, werden 4 Byte benötigt. Die am häufigsten vorkommenden Zeichen können mit 3 Bytes kodiert werden. MySQL verwendet standardmäßig nur 3 Bytes zum Kodieren, so dass Zeichen, die mit 4 Bytes kodiert werden (z.B. asiatische Schriftzeichen und Emojis), nicht gespeichert werden können. Alle Versuche, in einem Moodle-Text ein 4 Byte Zeichen einzugeben, führen daher zu einem Moodle-Datenbank-Fehler.
Zeile 9: Zeile 5:
MySQL unterstützt auch UTF-8 Zeichen, die mit 4 Bytes kodiert werden, aber dafür müssen geeignete Datenbankeinstellungen vorgenommen werden. Bestehende Moodle-Datenbanken müssen daher entsprechend konfiguriert werden, um die volle MySQL-Unterstützung zu gewährleisten.
MySQL unterstützt auch UTF-8 Zeichen, die mit 4 Bytes kodiert werden, aber dafür müssen geeignete Datenbankeinstellungen vorgenommen werden. Bestehende Moodle-Datenbanken müssen daher entsprechend konfiguriert werden, um die volle MySQL-Unterstützung zu gewährleisten.


Moodle stellt dafür ein CLI-Kommandozeilen-Skript zur Konvertierung der Datenbank bereit, so dass danach UTF-8 für MySQL (und MariaDB) voll unterstützt wird.
Moodle stellt dafür ein Kommandozeilen-Skript zur Konvertierung der Datenbank bereit, so dass danach UTF-8 für MySQL (und MariaDB) voll unterstützt wird. In Moodle älter als 3.1.5 und 3.2.2 hat das Skript nur die Kollation auf eine Varianten von ''utf8_bin'' umgestellt. Die empfohlene Kollation war ''utf8_unicode_ci''. Diese unterstützt jedoch nur mit 3 Byte kodierte Zeichen. Jetzt empfehlen wir die Kollation ''utf8mb4_unicode_ci'', die 4 Byte kodierte Zeichen unterstützt. Das Skript stellt in der Moodle-Datenbank die Kollation, den Zeichensatz, Standardtabelleneinstellungen und Tabellenspaltendefinitionen um.
 
danach volle MySQLkonvertiert comes with a Command Line Interface (CLI) script for converting to full UTF-8 for MySQL (and MariaDB). Before Moodle versions 3.1.5 and 3.2.2 this conversion tool would only change the Collation to some variant of 'utf8_bin'. 'utf8_unicode_ci' was the recommended Collation. We now recommend using 'utf8mb4_unicode_ci' which supports four byte characters (utf8_unicode_ci only supports three).
 
This script will attempt to change the database Collation, Character set, default table settings and column definitions.
 
To summarise:
 
* Fresh installs of Moodle 3.1.5 and 3.2.2 onwards will use utf8mb4 by default, if the database server is configured appropriately (see below).
* Sites upgrading to Moodle 3.1.5 or 3.2.2 can use the script to update to utf8mb4. In Moodle 3.3 a warning will show that the database isn't using full UTF-8 support and suggest moving to 'utf8mb4_unicode_ci', but you may choose to keep using 'utf8_*'.


===Dateiformat===
'''Zusammenfassung''':
* Neuinstallationen ab Moodle 3.1.5 und 3.2.2 verwenden standardmäßig utf8mb4, wenn der Datenbankserver entsprechend konfiguriert ist (siehe unten).
* Moodle-Site, die auf 3.1.5 oder 3.2.2 aktualisieren, können das Skript zur Aktualisierung auf ''utf8mb4'' verwenden. In Moodle 3.3 zeigt eine Warnung an, dass die Datenbank UTF-8 nicht voll unterstützt und empfohlen wird, auf ''utf8mb4_unicode_ci'' umzustellen. Sie können sich aber auch dafür entscheiden, weiterhin ''utf8_*'' zu verwenden.


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.
Folgende Einstellungen müssen geändert werden:


===File per table===
*''Dateiformat'': Eine bestimmte Kombination von Einstellungen ist nötig, um große Indizes in Tabellenspalten vom Datentyp ''varchar'' zu erlauben. Das Dateiformat muss auf ''Barracuda'' gesetzt werden. Damit ist es möglich, das Zeilenformat auf ''Compressed'' oder ''Dynamic'' zu setzen.
*''File per table''
*''Large prefix'' - diese Einstellung erlaubt in Kombination mit dem Zeilenformat ''Compressed'' oder ''Dynamic'' Indizes vom Datentyp ''varchar'' mit mehr als 191 Zeichen.


To enable this setting see the upgrade steps listed below.
Im folgenden Abschnitt wird beschrieben, wie Sie diese Einstellungen ändern.


===Large prefix===
==Aktualisierungsschritte==


This in conjunction with the row format being either "Compressed" or "Dynamic" allows for large varchar indexes above 191 characters.
{{Hinweis|Sichern Sie Ihre Moodle-Datenbank, bevor Sie irgendwelche Änderungen vornehmen oder das Kommandozeilen-Skript laufen lassen!}}
To enable this setting see the upgrade steps listed below.


==Aktualisierung==
* Ändern Sie die Konfigurationseinstellungen für MySQL (dasselbe gilt für MariaDB). Dieser Schritt ist optional. Sie können das Skript laufen lassen, das versucht, diese Änderungen vorzunehmen. Wenn Fehler auftreten, ändern Sie die Einstellungen manuell wie folgt:
 
** Unter Linux müssen Sie die Konfigurationsdatei ''my.cnf'' ändern. Diese befindet sich häufig im Verzeichnis ''/etc/mysql/''.
Most important: Please backup your database before making any changes or running the CLI script.
** Nehmen Sie in dieser Datei folgende Änderungen vor:
 
* 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.
** On Linux based systems you will want to alter my.cnf. This may be located in '/etc/mysql/'.
** Make the following alterations to my.cnf:
<code>
<code>
[client]
[client]
Zeile 56: Zeile 42:
default-character-set = utf8mb4
default-character-set = utf8mb4
</code>
</code>
* Restart your MySQL server.
* Starten Sie den MySQL-Server neu.
* Run the CLI script to convert to the new Character set and Collation (requires Moodle 3.1.5, 3.2.2 or newer):  
* Lassen Sie das CLI-Kommandozeilenskript laufen, um auf den neuen Zeichensatz und auf die neue Kollation zu konvertieren (erfordert Moodle ab 3.1.5 oder 3.2.2):  
<pre>
<pre>
$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
</pre>
</pre>


'''NOTE: For large sites, this script will be slow. It is recommended to dump and reimport your data according to https://docs.moodle.org/33/en/Converting_your_MySQL_database_to_UTF8#Default_Mysql_character_set'''
'''Hinweis''': Auf großen Moodle-Sites läuft das Skript sehr langsam. Wir empfehlen die Daten zu sichern (dump) und wieder zu importieren (mit dem Parameter ''--skip-character-set'').


* Adjust the $CFG->dboptions Array in your '''config.php''' to make sure that Moodle uses the right Collation when connecting to the MySQL Server:  
* Ändern Sie die globale Variable ''$CFG->dboptions'' in der [[Moodle-Konfigurationsdatei]] ''config.php'', um sicherzustellen, dass Moodle bei der Verbindung mit dem MySQL-Server die richtige Kollation verwendet:
<pre>
<pre>
$CFG->dboptions = array(
$CFG->dboptions = array(
Zeile 72: Zeile 58:
);
);
</pre>
</pre>
* Try adding some Emojis (e.g. 😂💩) to your Moodle site to verify that the upgrade was successful.
* Versuchen Sie, in einem Text in Moodle einige Emojis (z.B. 😂💩) einzufügen, um zu sehen, ob die Aktualisierung erfolgreich war.
 
[[Category:Environment|UTF-8]]
[[Category:UTF-8]]
 


[[en:MySQL_full_unicode_support]]
[[en:MySQL_full_unicode_support]]
[[es:MySQL soporte unicode completo]]
[[fr:Support unicode complet pour MySQL]]

Aktuelle Version vom 29. März 2019, 09:59 Uhr

UTF-8

UTF-8 ist ein Zeichensatz, den die meisten Webseiten verwenden. Dieser Zeichensatz codiert 1 112 064 gültige Zeichen. Um diese Zeichen zu kodieren, werden 4 Byte benötigt. Die am häufigsten vorkommenden Zeichen können mit 3 Bytes kodiert werden. MySQL verwendet standardmäßig nur 3 Bytes zum Kodieren, so dass Zeichen, die mit 4 Bytes kodiert werden (z.B. asiatische Schriftzeichen und Emojis), nicht gespeichert werden können. Alle Versuche, in einem Moodle-Text ein 4 Byte Zeichen einzugeben, führen daher zu einem Moodle-Datenbank-Fehler.

MySQL unterstützt auch UTF-8 Zeichen, die mit 4 Bytes kodiert werden, aber dafür müssen geeignete Datenbankeinstellungen vorgenommen werden. Bestehende Moodle-Datenbanken müssen daher entsprechend konfiguriert werden, um die volle MySQL-Unterstützung zu gewährleisten.

Moodle stellt dafür ein Kommandozeilen-Skript zur Konvertierung der Datenbank bereit, so dass danach UTF-8 für MySQL (und MariaDB) voll unterstützt wird. In Moodle älter als 3.1.5 und 3.2.2 hat das Skript nur die Kollation auf eine Varianten von utf8_bin umgestellt. Die empfohlene Kollation war utf8_unicode_ci. Diese unterstützt jedoch nur mit 3 Byte kodierte Zeichen. Jetzt empfehlen wir die Kollation utf8mb4_unicode_ci, die 4 Byte kodierte Zeichen unterstützt. Das Skript stellt in der Moodle-Datenbank die Kollation, den Zeichensatz, Standardtabelleneinstellungen und Tabellenspaltendefinitionen um.

Zusammenfassung:

  • Neuinstallationen ab Moodle 3.1.5 und 3.2.2 verwenden standardmäßig utf8mb4, wenn der Datenbankserver entsprechend konfiguriert ist (siehe unten).
  • Moodle-Site, die auf 3.1.5 oder 3.2.2 aktualisieren, können das Skript zur Aktualisierung auf utf8mb4 verwenden. In Moodle 3.3 zeigt eine Warnung an, dass die Datenbank UTF-8 nicht voll unterstützt und empfohlen wird, auf utf8mb4_unicode_ci umzustellen. Sie können sich aber auch dafür entscheiden, weiterhin utf8_* zu verwenden.

Folgende Einstellungen müssen geändert werden:

  • Dateiformat: Eine bestimmte Kombination von Einstellungen ist nötig, um große Indizes in Tabellenspalten vom Datentyp varchar zu erlauben. Das Dateiformat muss auf Barracuda gesetzt werden. Damit ist es möglich, das Zeilenformat auf Compressed oder Dynamic zu setzen.
  • File per table
  • Large prefix - diese Einstellung erlaubt in Kombination mit dem Zeilenformat Compressed oder Dynamic Indizes vom Datentyp varchar mit mehr als 191 Zeichen.

Im folgenden Abschnitt wird beschrieben, wie Sie diese Einstellungen ändern.

Aktualisierungsschritte

Hinweis: Sichern Sie Ihre Moodle-Datenbank, bevor Sie irgendwelche Änderungen vornehmen oder das Kommandozeilen-Skript laufen lassen!
  • Ändern Sie die Konfigurationseinstellungen für MySQL (dasselbe gilt für MariaDB). Dieser Schritt ist optional. Sie können das Skript laufen lassen, das versucht, diese Änderungen vorzunehmen. Wenn Fehler auftreten, ändern Sie die Einstellungen manuell wie folgt:
    • Unter Linux müssen Sie die Konfigurationsdatei my.cnf ändern. Diese befindet sich häufig im Verzeichnis /etc/mysql/.
    • Nehmen Sie in dieser Datei folgende Änderungen vor:

[client] default-character-set = utf8mb4

[mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix

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

[mysql] default-character-set = utf8mb4

  • Starten Sie den MySQL-Server neu.
  • Lassen Sie das CLI-Kommandozeilenskript laufen, um auf den neuen Zeichensatz und auf die neue Kollation zu konvertieren (erfordert Moodle ab 3.1.5 oder 3.2.2):
$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci

Hinweis: Auf großen Moodle-Sites läuft das Skript sehr langsam. Wir empfehlen die Daten zu sichern (dump) und wieder zu importieren (mit dem Parameter --skip-character-set).

  • Ändern Sie die globale Variable $CFG->dboptions in der Moodle-Konfigurationsdatei config.php, um sicherzustellen, dass Moodle bei der Verbindung mit dem MySQL-Server die richtige Kollation verwendet:
$CFG->dboptions = array(
  …
  'dbcollation' => 'utf8mb4_unicode_ci',
  …
);
  • Versuchen Sie, in einem Text in Moodle einige Emojis (z.B. 😂💩) einzufügen, um zu sehen, ob die Aktualisierung erfolgreich war.