[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