Zeichensatzprobleme MYSQL
norbert
- datenbank
auf unserem internen Server läuft noch ein mysql 4.0.21.
Ich habe mit einem Client (sequel pro) die komplette Datenbank in SQL gesichert.
Nach dem Zurückspielen ist wohl der Zeichensatz verdreht worden.
Der Client zeigt als Zeichensatz bei den Tabellen "windows cyrillic(cp1251)" an?!?
Wie kommt das Zustande?
Wie kriege ich das wieder hin?
So sieht die SQL-datei aus:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS adressen
;
CREATE TABLE adressen
(
REC\_ID
int(11) NOT NULL auto_increment,
MATCHCODE
varchar(255) NOT NULL default '',
KUNDENGRUPPE
int(11) NOT NULL default '0',
SPRACH\_ID
int(11) NOT NULL default '2',
...
PRIMARY KEY (REC\_ID
),
KEY IDX\_KUNNUM1
(KUNNUM1
),
KEY IDX\_MATCH
(MATCHCODE
)
) TYPE=MyISAM;
LOCK TABLES adressen
WRITE;
Und dann die Inserts usw. insgesamt ca 140 Tabellen und ca. 250MB :(
Vielen Dank für den ultimativen Tip
Hi,
Ich habe mit einem Client (sequel pro) die komplette Datenbank in SQL gesichert.
Nach dem Zurückspielen ist wohl der Zeichensatz verdreht worden.Der Client zeigt als Zeichensatz bei den Tabellen "windows cyrillic(cp1251)" an?!?
Wie kommt das Zustande?
Has du die Zeichenkoderiung der Verbindung korrekt ausgehandelt vor dem Zurückspielen?
Wie kriege ich das wieder hin?
Wenn obiges nichts bringt, kannst du versuchen die CREATE TABLE Statements um die Angabe der Zeichenkodierung für die Tabelle zu erweitern.
MfG ChrisB
Wenn obiges nichts bringt, kannst du versuchen die CREATE TABLE Statements um die Angabe der Zeichenkodierung für die Tabelle zu erweitern.
hmmm, und wie mache ich das konkret?
Ich dachte, das alte mysql kann mit Zeichensätzen nix anfangen.
Leider läuft die Software nur mit der alten Version
Tach!
auf unserem internen Server läuft noch ein mysql 4.0.21.
Has du die Zeichenkoderiung der Verbindung korrekt ausgehandelt vor dem Zurückspielen?
Der Zeichenkodierungs"kram" und die Aushandlung kamen erst mit Version 4.1. Auch kennt MySQL 4.0 Unicode und UTF-8 nicht.
Wie kriege ich das wieder hin?
Wenn obiges nichts bringt, kannst du versuchen die CREATE TABLE Statements um die Angabe der Zeichenkodierung für die Tabelle zu erweitern.
Is nich. Soweit ich mich erinnere, stellt man den Server nur generell ein, und alle Clients müssen dann diese Kodierung verwenden. Default ist Latin1. Wenn die Anwendung Latin1 mit dem Server spricht, muss ein Dump auch Latin1-kodiert sein, um die Daten korrekt in den Server zu bekommen. Spricht die Anwendung UTF-8, so kann das der Server zwar verlustfrei speichern (die Bytes der UTF-8-Sequenzen werden als einzelne Zeichen interpretiert), aber ein Dump muss dann auch so verkehrt eingelesen werden. Wenn nun aber ein aktueller phpMyAdmin im Spiel ist, ... wird es jedenfalls nicht einfacher. Am besten den Dump an der Kommandozeile mit "mysql" einspielen. Wenn das so nichts wird, dann umkodieren von vermutlich UTF-8 nach Latin1/Windows-1252/ISO-8859-1. Das "vermutlich" lässt sich mit einem Hexeditor bei den Umlauten überprüfen.
dedlfix.