[Eisfair] [e64] Bacula -> -Problem mit dem Zeichensatz
Martin Faderbauer
martin at fmit.at
Mi Nov 18 13:15:14 CET 2020
Hallo Marcus
> Wenn die Umlaute als Fragezeichen dargestellt werden, dann wird ein als ISO 8859-1 kodiertes Dokument als UTF-8 interpretiert.
> https://php-de.github.io/jumpto/utf-8/
genau das ist der Effekt den ich habe.
das heist ich muss die datenbank auf ISO 8859-1 umstellen dann sollen
die Dateinamen richtig erkannt werden.
ist "ISO 8859-1"="latin2_general_ci" ? ich weiß nicht warum da so viele
unterschiedliche Namen vorhanden sind. da blickt ja keiner mehr durch.
> MariaDB [bacula]> SHOW CHARACTER SET LIKE 'latin%';
> +---------+-------------+-------------------+--------+
> | Charset | Description | Default collation | Maxlen |
> +---------+-------------+-------------------+--------+
> | latin1 | | latin1_swedish_ci | 1 |
> | latin2 | | latin2_general_ci | 1 |
> | latin5 | | latin5_turkish_ci | 1 |
> | latin7 | | latin7_general_ci | 1 |
> +---------+-------------+-------------------+--------+
> 4 rows in set (0.001 sec)
>
>
> MariaDB [bacula]> SHOW CHARACTER SET LIKE 'U%';
> +---------+------------------+--------------------+--------+
> | Charset | Description | Default collation | Maxlen |
> +---------+------------------+--------------------+--------+
> | ujis | | ujis_japanese_ci | 3 |
> | utf8 | | utf8_general_ci | 3 |
> | ucs2 | | ucs2_general_ci | 2 |
> | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
> | utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
> | utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
> | utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
> +---------+------------------+--------------------+--------+
> 7 rows in set (0.000 sec)
welcher Zeichensatz ist jetzt als Defaultwert eingestellt?
die Skripte die die Datenbank anlegen machen keine Zeichensatz
Einstellungen.
> baceis01 # cat /opt/bacula/script/create_mysql_database
> #!/bin/sh
> #
> # Copyright (C) 2000-2020 Kern Sibbald
> # License: BSD 2-Clause; see file LICENSE-FOSS
> #
> # shell script to create Bacula database(s)
> #
>
> bindir=/usr/bin
> db_name=bacula
>
> if $bindir/mysql $* -f <<END-OF-DATA
> CREATE DATABASE IF NOT EXISTS ${db_name};
> END-OF-DATA
> then
> echo "Creation of ${db_name} database succeeded."
> else
> echo "Creation of ${db_name} database failed."
> fi
> exit 0
das müsste schon in der Zeile mit "CREATE DATABASE" passieren
somit sollte die Einstellung vom Eis beim ERSTELLEN der Datenbank
greifen > MARIADB103_DEFAULT_COLLATION = latin1_german1_ci
ich werde es Testen und melde mich wieder
Danke
Am 18.11.2020 um 07:43 schrieb Marcus Röckrath:
> Hallo Martin,
>
> Marcus Röckrath wrote:
>
>>> das ist wenigstens ein Ansatz.
>>> das heißt man sollte vor dem anlegen der Datenbank schon den richtigen
>>> Zeichensatz eingestellt haben. nachträgliche Änderungen werden nicht in
>>> die Datenbank übernommen.
>>
>> Mit der Defaultvorgabe für die Kollation wird eine DB erzeugt, wenn beim
>> Anlegen nicht explizit eine andere vorgegeben wird.
>>
>> Welche Kollation hat die bacula-DB (der E64 hat utf8)?
>>
>> Wenn du phpmyadmin installiert hast, gehe auf die bacula-DB und du siehst
>> in für jede Tabelle der DB in der Spalte Kollation diese Information. Im
>> Reiter "Operationen" findest du unten die Vorgabe der DB, die auch greift,
>> wenn nun neue Tabellen in die DB ohne explizite Kollationsvorgabe erzeugt
>> werden. Hier kann man möglicherweise eine "Konvertierung/Änderung"
>> anstoßen.
>>
>> https://mariadb.com/kb/en/alter-database/
>>
> https://www.markus.zierhut.name/2010/03/26/zeichensatz-einer-mysql-tabelle-nachtraglich-andern/
>>
>> Vor jeder Mainupaltion an der DB ist ein Backup der DB Pflicht!
>
> Ich finde auch Hinweise auf Charset neben Collate:
>
> https://www.homepage-anleitung.de/2010/06/mysql-datenbank-auf-zeichensatz-utf8-umstellen/
>
> Den Charset einer Tabelle finde ich aber nicht in phpmyadmin (übersehen?).
> Es gibt bestimmt einen SQL-Befehl, der dies auch anzeigt.
>
Mehr Informationen über die Mailingliste Eisfair