php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-09-2006, 23:21
bweichel
 Registrierter Benutzer
Links : Onlinestatus : bweichel ist offline
Registriert seit: Aug 2004
Beiträge: 452
bweichel ist zur Zeit noch ein unbeschriebenes Blatt
Standard Collation der Tabellen

Hallo,

ich habe in meinen Tabellen die Sortierung "latin1_german_ci", auch die Datenbank hat diese Sortierung bekommen. Ich möchte jetzt über das PHPMyAdmin Tool eine Tabelle nach einer Artikelnummer abzusuchen, indem ich in das entsprechende Feld bei PHPMyAdmin den Wert mit % eingebe. Dabei kommt immer folgende Meldung:

PHP-Code:
#1267 - Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '=' 
Wie kann ich das beheben und was ist das?

Danke!

Gruß Björn
Mit Zitat antworten
  #2 (permalink)  
Alt 21-09-2006, 09:01
aimbot
 PHP Junior
Links : Onlinestatus : aimbot ist offline
Registriert seit: Feb 2004
Ort: Lahr - Germany
Beiträge: 779
aimbot ist zur Zeit noch ein unbeschriebenes Blatt
Standard

er kann die gegebenen daten nicht vergleichen weil sie unterschiedliche collations nutzen. guck mal woher deine daten kommen
__________________
MfG
aim
Lies mich jetzt!
- OT-Tags-Liebhaber und BB-Code-Einrücker -
Mit Zitat antworten
  #3 (permalink)  
Alt 25-09-2006, 15:26
bweichel
 Registrierter Benutzer
Links : Onlinestatus : bweichel ist offline
Registriert seit: Aug 2004
Beiträge: 452
bweichel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, also die Daten werden teils durch PHP Scripte eingetragen. Das eintragen scheint zu funktionieren, denn Daten sind drin. Jedoch kann ich die Daten nicht vergleichen oder mit Select abrufen. Da kommt immer die o. g. Fehlermeldung. Ich habe nun meine Datenbank, die Tabellen und Felder mit latin1_german1_ci angelegt bzw. bearbeitet. Muss ich im DB Connect bei meinen PHP Scripten auch noch etwas einstellen, damit die Daten halt im richtigen Format in die Datenbank geschrieben werden?

Momentan habe ich folgenden DB Connect:

PHP-Code:
$db mysql_connect("host""benutzer""passwort");
mysql_select_db("datenbank"$db); 
Mit Zitat antworten
  #4 (permalink)  
Alt 25-09-2006, 15:27
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von bweichel
Muss ich im DB Connect bei meinen PHP Scripten auch noch etwas einstellen, damit die Daten halt im richtigen Format in die Datenbank geschrieben werden?
Die Verbindung zur DB sollte auch die Zeichenkodierung verwenden.

SET NAMES o.ä.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 25-09-2006, 15:35
bweichel
 Registrierter Benutzer
Links : Onlinestatus : bweichel ist offline
Registriert seit: Aug 2004
Beiträge: 452
bweichel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, und wo genau muß das SET NAMES stehen? Ich hoffe doch nicht in jedem SQL-Statement? Wohin muss das in meinem DB Connect?
Mit Zitat antworten
  #6 (permalink)  
Alt 25-09-2006, 15:48
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Einmal als Query absetzen, nach Aufbau der Verbindung.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 25-09-2006, 20:10
bweichel
 Registrierter Benutzer
Links : Onlinestatus : bweichel ist offline
Registriert seit: Aug 2004
Beiträge: 452
bweichel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also ich raff das nicht wirklich. Vielleicht kannst du mir das Query mal notieren...

Habe nun folgendes geschrieben:

PHP-Code:
$query "
   SELECT *
   FROM user
  SET NAMES = 'latin1_german1_ci'
"
;

mysql_query($query); 
Meine Datenbank und die Tabelle hat die Sortierung latin1_german1_ci. Sollte doch richtig sein. Die Tabelle war vorher leer, es standen auch keine falsch formatierten Werte drin.

Wenn ich mit PHPMyAdmin suche, wird folgendes Statement erstellt:

PHP-Code:
SELECT 
FROM `user
WHERE `freigegeben` = CONVERT_utf8 'Nein'
USING latin1 
LIMIT 0 30 
und es erscheint folgende Meldung:

PHP-Code:
#1267 - Illegal mix of collations (latin1_german1_ci,IMPLICIT) and
 
(latin1_swedish_ci,IMPLICIT) for operation '=' 
Umlaute werden nun falsch dargestellt. Unter anderem wird Björn mit "Björn" eingetragen. Eigentlich habe ich um genau das zu verhindern meine Tabellen und Datenbanken mit "latin1_german1_ci" angelegt anstatt wie der Standard vorgibt mit "utf8_general_ci".
Mit Zitat antworten
  #8 (permalink)  
Alt 25-09-2006, 20:19
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Setze SET NAMES als eigenständige Query ab, und zwar direkt nachdem du die Verbindung aufgebaut hast.


Wenn du nur mit dem PMA arbeiten willst - dann stelle da auf der Startseite die korrekte Kodierung für die Verbindung ein.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 25-09-2006, 23:35
bweichel
 Registrierter Benutzer
Links : Onlinestatus : bweichel ist offline
Registriert seit: Aug 2004
Beiträge: 452
bweichel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry, ich habe da jetzt folgendes geschrieben...

PHP-Code:
$query "
   SET NAMES = 'latin1_german1_ci'
"
;

mysql_query($query); 
Der Insert stellt jedoch immer noch die Umlaute falsch ein. Was ist PMA? Und wie kann ich die Kodierung auf der Startseite einstellen? Sorry, aber ich hatte die Probleme vorher noch nie.
Mit Zitat antworten
  #10 (permalink)  
Alt 25-09-2006, 23:40
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von bweichel
Was ist PMA?
phpMyAdmin
Zitat:
Sorry, aber ich hatte die Probleme vorher noch nie.
Aber schon viele andere vor dir ...

Und mehr neues gibt's dazu auch kaum zu sagen. Man sollte darauf achten, überall die gleiche Zeichenkodierung zu verwenden - und sich vielleicht erst mal klarmachen, wo "überall" überall sein kann ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 19-10-2006, 12:03
bweichel
 Registrierter Benutzer
Links : Onlinestatus : bweichel ist offline
Registriert seit: Aug 2004
Beiträge: 452
bweichel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von wahsaga
Man sollte darauf achten, überall die gleiche Zeichenkodierung zu verwenden - und sich vielleicht erst mal klarmachen, wo "überall" überall sein kann ...
Sorry, aber wo kann den Überall sein? Ich habe nun in meiner ganzen Datenbank, in den Tabellen, in den Feldern "latin1_german1_ci" eingestellt und...

in meiner Tabelle, die mit der Sortierung latin1_german1_ci versehen ist, stehen Farb- und Größenvariationen.
Wenn ich nach einer bestimmte Variation selektieren möchte kommt immer folgenden Meldung:

#1267 - Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

Selektiere ich nicht, werden die Datensätze korrekt ausgegeben.

Folgendes Statement wird verwendet:

SELECT *
FROM products_options_values
WHERE products_options_values_name = '$variation'
LIMIT 1

wobei $variation mit PHP zusammen gesetzt wird und zum Beispiel den Wert: "Farbe weiß, Größe XL" beinhalten kann.
Ich habe bereits "COLLATE latin1_german1_ci" hinter "WHERE products_options_values_name = '$variation'" gesetzt, dann kommt die Meldung:

#1253 - COLLATION 'latin1_german1_ci' is not valid for CHARACTER SET 'utf8'

Was kann ich da machen? Woran liegt das? Ich weiß wirklich nicht mehr weiter... "SET NAMES" habe ich auch bereits als eigenes Query abgesetzt... geht auch nicht...
Mit Zitat antworten
  #12 (permalink)  
Alt 19-10-2006, 13:03
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von bweichel
#1253 - COLLATION 'latin1_german1_ci' is not valid for CHARACTER SET 'utf8'
Du benutzt offenbar immer noch UTF-8 als "Character Set" - und für das gibt es nun mal keine Collation latin_irgendwas.

http://dev.mysql.com/doc/refman/4.1/...-charsets.html
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #13 (permalink)  
Alt 19-10-2006, 14:54
bweichel
 Registrierter Benutzer
Links : Onlinestatus : bweichel ist offline
Registriert seit: Aug 2004
Beiträge: 452
bweichel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also muss ich das ganze auf der Hauptseite von PMA umstellen? Dort steht nämlich noch utf8? Was passiert dann mit den anderen Datenbanken?

Ist latin1 als Charset und latin1_german1_ci als Collation ok? Möchte dann ein für alle mal damit abgeschlossen haben.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:16 Uhr.