Zur Navigation

Fehlermeldung "Illegal mix of collations"

1 tobi

[Jörg: die folgenden Beiträge sind von diesem Thread abgetrennt]

ne, 'Mä Kr Li' ist eins

$sql = "
SELECT id, wochentag, spielzeit, spielklasse, heimmannschaft, gastmannschaft, heimergebnis, gastergebnis FROM spielergebnisse WHERE heimmannschaft NOT LIKE '%spielfrei%' AND gastmannschaft  NOT LIKE '%spielfrei%' AND spielklasse = 'Mä Kr Li' ORDER BY spielzeit";

Fehlermeldung: Ungültige Abfrage: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

13.08.2011 17:09 | geändert von Jörg: 13.08.2011 18:18

2 Jörg Kruse

Das Encoding von 'Mä Kr Li' passt nicht zum Encoding des Datenfeldes.

Was für eine Kollation hat das betreffende Datenfeld (kannst du z.B. über PHPMyAdmin einsehen)?

In welchem Zeichensatz speicherst du deine Scriptdatei ab?

Teilst du der Datenbank mit, in welchem Zeichensatz die Daten übertragen werden (z.B. mit mysql_set_charset())

13.08.2011 18:16 | geändert: 13.08.2011 18:19

... 1 Jahr später ...

3 tobi

Hallo Jörg,

nach über einem Jahr muß ich das Thema nochmals aufgreifen, weil ich erneut die o.g. Fehlermeldung erhalte.

Script 1 ließt Daten aus einer Seite aus und speichert sie in der DB.
latin1_swedish_ci ist in der DB als Kollation.

Script 2 soll mittels einem anderen Script die Inhalte auswerfen, wobei es dann zu o.g. Meldung (Post 1) kommt.
Datenbankverbindung in Script 2 ist: mysql_set_charset('utf8',$link);

Ich habe nun spaßeshalber mal in der DB die Kollation für die problematische Spalte zu utf8_general_ci geändert. Fehlermeldung ist nun weg, Inahlt wird mir aber keiner ausgegeben.

Ich bin etwas ratlos.

Gruß Tobi

13.08.2012 14:14

4 Jörg Kruse

Wenn der SQL-Code einen Umlaut oder andere Nicht-ASCII-Zeichen enthält, muss die Datei, in welchem dieser Code steht, mit dem Enconding abgepeichert sein, der dem Charset der Datenbankverbindung entspricht.

Datenbankverbindung in Script 2 ist: mysql_set_charset('utf8',$link);

Dann sollte auch Script 2 in UTF8 abgespeichert sein.

13.08.2012 16:34 | geändert: 13.08.2012 16:35

5 tobi

So, Scipt 1 hat mysql_set_charset('utf8 beim Datenbank connecten, auslesen und in der DB speichern.
Script 2 hat mysql_set_charset('utf8 beim Datenbank connecten, und auf der Seite dann aufzeigen.

Allerdings noch immer kein Inhalt.
Die Kollation habe ich jetzt in der DB direkt komplett auf utf8_general_ci gestellt.

13.08.2012 17:31

6 Jörg Kruse

Die Kollation in der DB würde ich (erstmal) so lassen.

Zitat von Jörg
Dann sollte auch Script 2 in UTF8 abgespeichert sein.

Damit bezog ich mich auf den Zeichensatz, in welchem dein Editor, mit welchem du das Script 2 bearbeitest, diese Datei abspeichert. Welchen Editor verwendest du? Normalerweise haben Editoren beim Speichern eine solche Option, da würde ich mal nach dem Zeichensatz schauen.

13.08.2012 17:38

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]