Kollationsänderung nach Serverumzug
Kollationsänderung nach Serverumzug
Hi,
auf meinem alten Server liefen meine Datenbanktabellen mit der Kollation latin1_swedish_ci.
Ich habe nach einem Serverumzug alle Datenbanken importiert und alles hat geklappt.
Nun habe ich erste neue Tabellen angelegt und diese bekommen die Kollation utf8_general_ci.
Erste Anwendungen melden einen Missmatch da und verursachen Fehler.
Ich denke utf8_general_ci ist der richtige Wert.
Wie kann ich alle Datenbanken komplett und einfach darauf umstellen und künftig dafür sorgen das EX- und Import immer mit der korrekten Kollation laufen?
Gruss
jluerken
auf meinem alten Server liefen meine Datenbanktabellen mit der Kollation latin1_swedish_ci.
Ich habe nach einem Serverumzug alle Datenbanken importiert und alles hat geklappt.
Nun habe ich erste neue Tabellen angelegt und diese bekommen die Kollation utf8_general_ci.
Erste Anwendungen melden einen Missmatch da und verursachen Fehler.
Ich denke utf8_general_ci ist der richtige Wert.
Wie kann ich alle Datenbanken komplett und einfach darauf umstellen und künftig dafür sorgen das EX- und Import immer mit der korrekten Kollation laufen?
Gruss
jluerken
Re: Kollationsänderung nach Serverumzug
Du kannst UTF-8 als Standard-Zeichensatz in der my.cnf sowohl für Client, Server und mysqldump eintragen. Bestehende Datenbanken konvertierst Du folgendermaßen:
Code: Select all
ALTER DATABASE `<Deine_DB>` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Re: Kollationsänderung nach Serverumzug
Danke sehr. Wenn du mir nun noch verraten kannst was ich in der my.cnf eintragen müsste wäre es perfektjfreund wrote:Du kannst UTF-8 als Standard-Zeichensatz in der my.cnf sowohl für Client, Server und mysqldump eintragen. Bestehende Datenbanken konvertierst Du folgendermaßen:Code: Select all
ALTER DATABASE `<Deine_DB>` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Re: Kollationsänderung nach Serverumzug
Joe User hat eine ziemlich brauchbare Konfiguration hier im Forum gepostet (siehe http://www.rootforum.org/forum/viewtopic.php?t=36343). Da sind die Zeichensatz-Angaben für utf-8 für fast alle Hilfsprogramme drin gesetzt. Ansonsten wäre auch noch http://blog.koehntopp.de/archives/1837-Eine-my.cnf-Datei-erzeugen-Teil-1.html lesenswert, in Zusammenhang mit Deiner Frage natürlich insbesondere der Abschnitt über Zeichensätze.
Re: Kollationsänderung nach Serverumzug
jfreund wrote:Du kannst UTF-8 als Standard-Zeichensatz in der my.cnf sowohl für Client, Server und mysqldump eintragen. Bestehende Datenbanken konvertierst Du folgendermaßen:Code: Select all
ALTER DATABASE `<Deine_DB>` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Leider ändert diese Query nicht die einzelnen Tabellen innerhalb der DB die bereits falsch sind. Diese muss ich jedoch auch alle ändern.
Ich wette dazu kennst du auch die passende Query oder? :D
Re: Kollationsänderung nach Serverumzug
Code: Select all
ALTER TABLE `murks` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE `murks` CHANGE `blub` `blub` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
Re: Kollationsänderung nach Serverumzug
Kann ich den ersten Befehl irgendwie wie genereller gestalten?
So muss ich Tabelle für Tabelle durchgehen. Gibts nicht sowas wie?
...oder besser noch ne Query die in einer Datenbank grundsätzlich überall die Collate ändert. Ich will nicht jede Tabelle einzeln durchgehen, das wäre zu viel.
So muss ich Tabelle für Tabelle durchgehen. Gibts nicht sowas wie?
Code: Select all
ALTER TABLE `ALLETABELLEN` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Re: Kollationsänderung nach Serverumzug
Hab nun alle Tabellen geändert, bekomme aber nun folgende Fehlermeldung:
Die entsprechende Tabelle hab ich mir angesehen, eingestellt ist definitiv nun utf8_general_ci. Keine Ahnung was er da meckert.
Code: Select all
SELECT * FROM vb3_predeftxts WHERE FIND_IN_SET('4', fids) > 0 AND FIND_IN_SET('6', ugids) > 0 AND (showon=1 OR showon=3);
MySQL Error : Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (utf8_general_ci,IMPLICIT) for operation 'find_in_set'
Error Number : 1267
Re: Kollationsänderung nach Serverumzug
Hab den Fehler gefunden. Google und die Forensuche sei Dank!jluerken wrote:Hab nun alle Tabellen geändert, bekomme aber nun folgende Fehlermeldung:Die entsprechende Tabelle hab ich mir angesehen, eingestellt ist definitiv nun utf8_general_ci. Keine Ahnung was er da meckert.Code: Select all
SELECT * FROM vb3_predeftxts WHERE FIND_IN_SET('4', fids) > 0 AND FIND_IN_SET('6', ugids) > 0 AND (showon=1 OR showon=3); MySQL Error : Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (utf8_general_ci,IMPLICIT) for operation 'find_in_set' Error Number : 1267
Es handelt sich hierbei wohl um einen Bug meiner MySQL Version.
Ich habe die my.cnf nun auf latin1 undgestellt und alle Tabellen sowie Felder auf latin1_swedish_ci
Bisher funktioniert das ganz gut und ich konnte noch keine Fehler feststellen.
Re: Kollationsänderung nach Serverumzug
Leider zu früh gefreut.
Alle aktuellen Tabellen laufen tadellos aber neue Tabellen werden grundsätzlich mit utf8_general_ci angelegt.
In der my.cnf hab ich allerdings unter [mysqld]
eingetragen.
Was könnte ich vergessen oder falsch gemacht haben?
MySQL Version Version: 4.1.10a-log
Alle aktuellen Tabellen laufen tadellos aber neue Tabellen werden grundsätzlich mit utf8_general_ci angelegt.
In der my.cnf hab ich allerdings unter [mysqld]
Code: Select all
character-set-server = latin1
default-character-set = latin1
default-collation = latin1_swedish_ci
Was könnte ich vergessen oder falsch gemacht haben?
MySQL Version Version: 4.1.10a-log