phpbar.de logo

Mailinglisten-Archive

[php] MYSQL: Fehler 1267

[php] MYSQL: Fehler 1267

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Apr 24 14:01:46 CEST 2006


Hallo Stephan,

Am Montag, 24. April 2006 13:55 schrieb Stephan Beck:
> Lutz wrote:
> > > Robert wrote:
> > > > Hallo Stephan
> > > >
> > > > Versuche mal SELECT * FROM person WHERE LOWER( username ) =
> > > > LOWER( 'username' COLLATE latin1_swedish_ci) AND PASSWORD =
> > > > PASSWORD( 'password' COLLATE latin1_swedish_ci)
> > >
> > > Die darauf folgende Fehlerausgabe:
> > > #1253 - COLLATION 'latin1_swedish_ci' is not valid for CHARACTER
> > > SET 'utf8'
> >
> > guck mal hier:
> > http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
>
> Was mit aber leider nicht bei meinem anfangs beschriebenen Problem
> hilft: ---
> Fehlermeldung:
> #1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and
> (utf8_general_ci,COERCIBLE) for operation '='
>
> SQL-Statement:
> SELECT * FROM person WHERE LOWER( username ) = LOWER( 'username' )
> AND PASSWORD = PASSWORD( 'password' )
>
> PHP-Version: 4.3.10
> MYSQL-Version: 4.1.8
>
> Ich habe mehrere Applikationen lokal laufen.
> Nun ist bei einem Login der beschriebene Fehler aufgetreten.
> Allerdings funktioniert das gleiche Statemnet in einer anderen
> Applikation problemlos. Beide benutzen die gleiche Datenbankinstanz
> und laufen auf dem gleichen Server.
>
> Eine Eingabe des Statements in phpmyadmin 2.6.1 liefert den gleichen
> Fehler.
>
> Die 2 Felder werden in beiden Tabellen als Kollation:
> latin1_swedish_ci angezeigt.
>
> Auf einem anderen Server (PHP: 4.4.1, MYSQL: 4.0.23, phpmyadmin:
> 2.6.4) funktioniert die Abfrage im phpmyadmin, die Abfrage über meine
> Applikation wirft allerdings den gleichen Fehler.

Du müßtest mal für jede Verbindung prüfen, wie die Zeichensätze jeweils 
gesetzt sind:

	SHOW variables LIKE 'character_set_%';

Ich vermute, daß es da irgendwo einen kleinen, aber entscheidenden 
Unterschied gibt.

Mit folgendem SQL-Befehl kannst Du den Zeichensatz für die offene 
Verbindung setzen:

	set character set "{Zeichensatz}";

{Zeichensatz} kann z.B. latin1 oder utf8 sein. Hilft das weiter?


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive