Alle TEXTfelder werden als BLOB dargestellt

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

  • Alle TEXTfelder werden als BLOB dargestellt

    Hiho,

    ich habe folgendes Problem:

    Ich habe eine Datenbank mit einigen Tables, wie z.b. ein Table um Kategorien anzuzeigen:

    Name Typ Kollation
    id int(11) -
    name text utf8_bin
    parent int(11) -


    Soweit sogut, es funktioniert auch alles Ausnahmslos, will ich mir jedoch den Inhalt der Datenbank anzeigen lassen in phpMyAdmin so steht überall dort wo ein Textfeld ist [BLOB - X Bytes] (x=Länge). In HeidiSQL genauso. Was läuft da schief? Bevor ich auf utf8 umgestellt habe konnte ich mir alles anschauen.

    Zudem meine Frage: Sollte ich besser auf UTF8_bin oder _unicode stellen?

    Bin in Datenbanken nicht so bewandert.

  • #2
    Seit MySQL 5 sind eigentlich TEXT-Datentypen eigentlich überflüssig, da VARCHARS genauso viel Daten aufnehmen können.
    Dein Problem kann ich allserdings nicht nachvollziehen. Attribute vom Typ TEXT (oder LONGTEXT) und CHARACTER SET (die Kollation ist hier nicht von Bedeutung) utf8 werden problemlos angezeigt.
    Erst wenn ich den den Typ auf BLOB ändere, zeigt sich dieses (in dem Falle logische) Verhalten
    Gruss
    H2O

    Kommentar


    • #3
      - Doppelt sorry -
      Zuletzt geändert von norodon; 07.08.2008, 16:16.

      Kommentar


      • #4
        Ich werde es mal mit varchars ausprobieren, evtl schafft das Abhile. Es ist beim Programmieren sehr mühselig immer in einen Eintrag "reinschauen" zu müssen bevor man weiß, was drin steht.

        Wie gesagt es steht alles auf Text und es zeigt sich das BLOB typische Verhalten. Interessanter Weise sowohl auf meinem lokalen Testrechner, als auch auf dem Server wo es letztendlich mal laufen soll.

        Wenn ich das grad richtig sehe, muss man bei Varchar eine Länghe angeben. Was ist, wenn ich die Länge (bei einem GB Eintrag, Forenbeitrag etc) nicht kenne?


        Edit:
        Wenn ich die Felder auf Varchar stelle sehe ich deren Inhalt wieder.
        Zuletzt geändert von norodon; 07.08.2008, 16:19.

        Kommentar


        • #5
          dafür ist ja gerade varchat geeignet (variable character)

          varchar bekommt eine maximale länge mitgeteillt und nimmt dann die größe an die es nur braucht.

          deswegen ist es auch langsamer als char ... aber chat reserviert immer die angegebenen zeichen

          bei md5 hash werten (passwort) nehme ich z.b. immer char32 .. da ein md5 hash genau so groß ist und sich nicht ändert (von der länge her)

          benutzernamen und ähnliche dinge bekommen einen groben wert ... varchar(25) z.b.
          Gruß
          Uzu

          private Homepage

          Kommentar


          • #6
            Was würdest du für das Speichern eines Forenbeitrags denn für eine Länge empfehlen? Bzw verwenden?

            Kommentar


            • #7
              ich text .. bei mir funkt das auch (myisam)
              Gruß
              Uzu

              private Homepage

              Kommentar


              • #8
                Das bringt MIR aber nichts

                Weiterhin wäre noch die Frage utf8_bin oder unicode? Wo ist der unterschied? Was sollte man nehmen?


                Meine Blobs sind noch immer da :-\

                Kommentar


                • #9
                  wenn du dein text-feld von utf8-bin auf latin1_german2_ci änderst hast du wieder das alte gewohnte textfeld verhalten
                  Gruß
                  Uzu

                  private Homepage

                  Kommentar


                  • #10
                    Original geschrieben von norodon

                    Weiterhin wäre noch die Frage utf8_bin oder unicode? Wo ist der unterschied? Was sollte man nehmen?
                    utf8 ist unicode. Ausserdem habe ich dir schon mal gesagt, dass die Kollation nichts damit zu tun hat.
                    Ich habe jetzt auf alle möglichen Arten versucht, dein Problem Nachzuvollziehen:
                    CHARACTER SETs: latin1, utf8, ucs2
                    ENGINES: MyIsam, ImmoDB
                    Datentypen: VARCHAR(60000), MEDIUMTEXT, TEXT, LONGTEXT, BLOB
                    Ausser bei BLOB habe ich dieses Verhalten nirgends gesehen.
                    Interessant dabei ist, das unter utf8 varchars von mehr als 21841 Zeichen Länge in MEDIUMTEXT, bzw TEXT umgewandelt werden; d.h. die maximale Länge für varchar ist nicht 65535 Zeichen, sondern Bytes.
                    Hast du mal versucht die Daten im MySQL-Monitor auszugeben. Dort werden normalerweise sogar BLOB-Daten, soweit möglich, korrekt ausgegeben.
                    Zuletzt geändert von H2O; 08.08.2008, 08:56.
                    Gruss
                    H2O

                    Kommentar


                    • #11
                      ich hatte das vorhin auch gehabt.

                      Server Version: 5.0.51b-community-nt
                      MySQL-Client-Version: 5.0.11-beta
                      Verwandte php-Erweiterungen: mysql

                      tabelle innodb (myisam geht auch)
                      attribut: text OHNE größenangaben
                      kollation: utf8-bin
                      textfeld wird als blob behandelt

                      tabelle innodb (myisam geht auch)
                      attribut: text OHNE größenangaben
                      kollation: latin1_german2_ci
                      textfeld wird als textfeld behandelt
                      Gruß
                      Uzu

                      private Homepage

                      Kommentar


                      • #12
                        Haargenau dasselbe Verhalten bei mir wie bei UzumakiNaruto. Stelle ich auf latin1_german2_ci werden meine Textfelder als Texte dargestellt. Bei utf8 als Blobb, wie gehabt.

                        In der Konsole wird es als Text ausgegeben. Demnach liegt es evtl. an myPhpAdmin?

                        MySQL-Zeichensatz: UTF-8 Unicode (utf8)
                        Zeichensatz / Kollation der MySQL-Verbindung: utf8_bin

                        @H2O
                        Ich habe mich lediglich gewundert, dass es zur auswahl utf8_bin und utf8_unicode gibt.

                        Kommentar


                        • #13
                          OffTopic:

                          da ich meine beiträge nicht ändern kann ( warum ) muss ich wohl einen neuen machen.

                          Es ist Dir not erlaubt, Deine Beiträge zu bearbeiten.



                          ich habe die aktuellste PMA version (2.11.8.1)

                          SELECT * FROM TABELLE
                          PMA [BLOB - 11 Bytes]
                          HeidiSQL (MEMO)

                          schon komisch kann also nicht an PMA liegen
                          Gruß
                          Uzu

                          private Homepage

                          Kommentar


                          • #14
                            Ok ich muss mich entschuldigen, es hat tatsächlich doch mit der Kollation zu tun. Das Problem tritt allerdings (von den von mit getesteten Varianten) nur nut utf8_bin auf, und ist kein MySQL-, sondern ein PMA-Problem. Im MySQL-Monitor werden auch diese Texte korrekt angezeigt. Und auch mit PHP funktioniert das problemlos.
                            [edit]
                            Ich persönlich benutze eigentlich immer utf8_general_ci.
                            Zuletzt geändert von H2O; 08.08.2008, 14:09.
                            Gruss
                            H2O

                            Kommentar


                            • #15
                              Original geschrieben von H2O
                              Ok ich muss mich entschuldigen, es hat tatsächlich doch mit der Kollation zu tun. Das Problem tritt allerdings (von den von mit getesteten Varianten) nur nut utf8_bin auf, und ist kein MySQL-, sondern ein PMA-Problem. Im MySQL-Monitor werden auch diese Texte korrekt angezeigt. Und auch mit PHP funktioniert das problemlos.
                              [edit]
                              Ich persönlich benutze eigentlich immer utf8_general_ci.
                              und wie erklärst du dir das memo in heidisql??
                              Gruß
                              Uzu

                              private Homepage

                              Kommentar

                              Lädt...
                              X