Dump liest Umlaute inkorrekt ein

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

tklustig

Erfahrenes Mitglied
Hallo Leute, zunächst folgende Infos
Datenbank:MySQL, Typ: innoDB, Kollation:utf8_german2_cl
Wenn ich einen SQL-Dump über phpmyadmin einlesen lasse, ist alles Tutti, verwende ich jedoch folgendes Script, werden deutsche Umlaute mit wirren Zeichen dargestellt. Am Dump selber kann es folglich nicht liegen. Ursache muss folgendes Skript sein. Wie kann ich diesen Fehler beheben bzw. wie muss der eigentliche Importbefehl mysql -u root %database% < %path2dump%%nameOfDump% abgeändert werden?

Bash:
@ECHO off
SET /p folder=Enter partition from mysql:
%folder%
SET /p path2Mysq=Enter path to mysql:
CD %path2Mysq%
SET /p nameOfDump=Enter name of dump:
SET /p path2dump=Enter path to dump:
Set /p database=Enter name of database:
mysql -u root %database% < %path2dump%%nameOfDump%
PAUSE
 
Meine erste Idee war, nach MySQL Commandline Options zu suchen, und siehe da, es gibt eine --default-charset Option: MySQL :: MySQL 8.0 Reference Manual :: 4.5.1.1 mysql Client Options

Probier also mal:

Code:
@ECHO off
SET /p folder=Enter partition from mysql:
%folder%
SET /p path2Mysq=Enter path to mysql:
CD %path2Mysq%
SET /p nameOfDump=Enter name of dump:
SET /p path2dump=Enter path to dump:
Set /p database=Enter name of database:
mysql --default-character-set=utf8mb4 -u root %database% < %path2dump%%nameOfDump%
PAUSE

Dann ist mir aufgefallen, dass du redirecting IO ("<") benutzt - und das in Batch. Tatsächlich erwähnt das MySQL Handbuch dazu etwas: MySQL :: MySQL 8.0 Reference Manual :: 3.5 Using mysql in Batch Mode

Probier also mal:
Bash:
@ECHO off
SET /p folder=Enter partition from mysql:
%folder%
SET /p path2Mysq=Enter path to mysql:
CD %path2Mysq%
SET /p nameOfDump=Enter name of dump:
SET /p path2dump=Enter path to dump:
Set /p database=Enter name of database:
mysql -u root %database% --default-character-set=utf8mb4 -e %path2dump%%nameOfDump%
PAUSE

Für den Grund, utf8mb4 statt utf8 zu nutzen, siehe hier: How to support full Unicode in MySQL databases · Mathias Bynens
(An dieser Stelle möchte ich auch anmerken, dass weder utf8 noch utf8mb4 character sets [Zeichensätze] sind! Die Option sollte eigentlich korrekterweise "--default-encoding" heißen. Für einen Zeichensatz kann es mehrere Encodings geben, etwa für Unicode gibt es UTF-8, UTF-16, UTF-32 LE/BE.)
 
Dein Importbefehl wird mit folgendem Error verweigert:
mysql: unknown option '-x'
Wenn ich die Reihenfolge umdrehe bzw. vor default nur ein Minus platziere lautet der Error
mysql: unknown option '-d'
Folgender Importbefehl klappt hingegen. Auch die Umlaute werden numehr korrekt eingelesen:
Code:
mysql -u root %database% --default-character-set=utf8mb4 < %path2dump%%nameOfDump%
 
Zuletzt bearbeitet:
Sehe nicht, wo die Optionen -x oder -d jemals genutzt werden in meinem Code. Aber gut, wenn es jetzt auch anders geht ;)
Ich markier dir mal deinen Beitrag als Lösung.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge

Zurück