• =?UTF-8?Q?Wie_MariaDB_Character_=C3=A4ndern=3F?=

    From =?UTF-8?Q?Sebastian_G=C3=B6decke?=@21:1/5 to All on Wed Sep 1 15:50:03 2021
    Moin,
    ich habe ein frisches debian10 und darauf läuft mariadb.
    Ich möchte nun hier utf8 nutzen, aber mir erschließt sich nicht, was
    in die cnf reingehört damit er damit auch startet.
    Ich habe da aktuell eine DB drin die auch noch leer ist und wenn ich
    nun auch befehle absetze, die den Character und collation ändern
    sollen, bestätigt er mir das positiv, aber geändert hat sich trotzdem
    nichts.

    Ich würde das gerne ändern, das diese hier alle auf utf8 sind:

    character_set_client utf8mb4
    character_set_connection utf8mb4
    character_set_database utf8mb4
    character_set_filesystem binary
    character_set_results utf8mb4
    character_set_server utf8mb4
    character_set_system utf8
    collation_connection utf8mb4_general_ci
    collation_database utf8mb4_general_ci
    collation_server utf8mb4_general_ci

    Was muss da in meiner mariadb.cnf rein?

    Vielen Dank für Tipps.

    --
    Mit freundlichen Grüßen
    Sebastian Gödecke

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Paul Muster@21:1/5 to All on Wed Sep 1 16:50:02 2021
    Am 01.09.2021 um 15:30 schrieb Sebastian Gödecke:

    ich habe ein frisches debian10 und darauf läuft mariadb.
    Ich möchte nun hier utf8 nutzen, aber mir erschließt sich nicht, was
    in die cnf reingehört damit er damit auch startet.
    Ich habe da aktuell eine DB drin die auch noch leer ist und wenn ich
    nun auch befehle absetze, die den Character und collation ändern
    sollen, bestätigt er mir das positiv, aber geändert hat sich trotzdem nichts.

    Ich würde das gerne ändern, das diese hier alle auf utf8 sind:

    character_set_client utf8mb4
    character_set_connection utf8mb4
    character_set_database utf8mb4
    character_set_filesystem binary
    character_set_results utf8mb4
    character_set_server utf8mb4
    character_set_system utf8
    collation_connection utf8mb4_general_ci
    collation_database utf8mb4_general_ci
    collation_server utf8mb4_general_ci

    Was muss da in meiner mariadb.cnf rein?

    Hm? Das _ist doch schon_ - erweitertes (oder so ähnlich) - UTF-8. Das
    mb4 war doch irgendwie dafür da, die neuen Emojis direkt speichern zu
    können.


    mfG Paul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sven Hartge@21:1/5 to simpsonetti@googlemail.com on Wed Sep 1 16:40:01 2021
    Sebastian Gödecke <simpsonetti@googlemail.com> wrote:

    ich habe ein frisches debian10 und darauf läuft mariadb.
    Ich möchte nun hier utf8 nutzen, aber mir erschließt sich nicht, was
    in die cnf reingehört damit er damit auch startet.

    Wird nicht character-set-server und collation-server schon per default definiert?

    Ich habe hier in der /etc/mysql/mariadb.conf.d/50-server.cnf folgendes:

    ,----
    | #
    | # * Character sets
    | #
    | # MySQL/MariaDB default is Latin1, but in Debian we rather default to
    | # the full
    | # utf8 4-byte character set. See also client.cnf
    | #
    | character-set-server = utf8mb4
    | collation-server = utf8mb4_general_ci
    `----

    Ich wüßte nicht, was sonst noch zu tun wäre.

    S°

    --
    Sigmentation fault. Core dumped.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Harald Weidner@21:1/5 to All on Wed Sep 1 18:30:01 2021
    Hallo,

    ich habe ein frisches debian10 und darauf läuft mariadb.
    Ich möchte nun hier utf8 nutzen, aber mir erschließt sich nicht, was
    in die cnf reingehört damit er damit auch startet.
    Ich habe da aktuell eine DB drin die auch noch leer ist und wenn ich
    nun auch befehle absetze, die den Character und collation ändern
    sollen, bestätigt er mir das positiv, aber geändert hat sich trotzdem
    nichts.

    Was soll sich geändert haben, wenn die Datenbank noch leer ist?

    Was man in die Konfigurationsdatei schreibt, wurde hier ja schon beschrieben. Wenn du das MariaDB Paket aus Debian verwendest, ist das ohnehin bereits so gesetzt.

    Eine Änderung in der Konfigurationsdatei wirkt sich aber nicht auf bereits vorhandene Datenbanken aus, sondern legt nur den Default fest, der bei neu erstellten Datenbanken verwendet wird, wenn der Charset / die Collation
    nicht explizit angegeben werden.

    Die Einstellung bei der bestehenden Datenbank ändert man mit mit ALTER
    DATABASE ... CHARACTER SET ... COLLATE ...
    vgl. https://mariadb.com/kb/en/alter-database/

    Aber auch hier gilt: Die Einstellung für die Datenbank ist lediglich ein Defaultwert für neue Tabellen, ändert aber nichts an bereits vorhandenen Tabellen. Wenn du bereits Tabellen hast, musst auch diese explizit ändern: ALTER TABLE ... CHARACTER SET ... COLLATE ...
    siehe https://mariadb.com/kb/en/alter-table/

    Und, wie man sich jetzt denken kann: auch dieser Befehl setzt lediglich
    einen Defaultwert, der für neue Felder (Spalten) in der Tabelle verwendet
    wird. Er ändert nicht bereits bestehende Felder. Um bestehende Daten zu konvertieren, kann ALTER TABLE ... CONVERT TO ... (ändert alle Felder) oder ALTER TABLE ... MODIFY ... (ändert einzelne Felder) verwendet werden.
    Beispiele gibt es hier: https://mariadb.com/kb/en/setting-character-sets-and-collations/

    Gruß, Harald

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)