Collation der Tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    » http://www.htaccess-generator.com

  • #2
    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 -

    Kommentar


    • #3
      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); 
      » http://www.htaccess-generator.com

      Kommentar


      • #4
        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.

        Kommentar


        • #5
          Ok, und wo genau muß das SET NAMES stehen? Ich hoffe doch nicht in jedem SQL-Statement? Wohin muss das in meinem DB Connect?
          » http://www.htaccess-generator.com

          Kommentar


          • #6
            Einmal als Query absetzen, nach Aufbau der Verbindung.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              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".
              » http://www.htaccess-generator.com

              Kommentar


              • #8
                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.

                Kommentar


                • #9
                  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.
                  » http://www.htaccess-generator.com

                  Kommentar


                  • #10
                    Original geschrieben von bweichel
                    Was ist PMA?
                    phpMyAdmin
                    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.

                    Kommentar


                    • #11
                      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...
                      » http://www.htaccess-generator.com

                      Kommentar


                      • #12
                        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.

                        Kommentar


                        • #13
                          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.
                          » http://www.htaccess-generator.com

                          Kommentar

                          Lädt...
                          X