Ankündigung

Einklappen
Keine Ankündigung bisher.

Kann MySQL mit Sonderzeichen arbeiten?

Einklappen

Neue Werbung 2019

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

  • Kann MySQL mit Sonderzeichen arbeiten?

    Liebes PHP.de-Forum,

    Ich habe eine Tabelle mit dem Namen chat in MySQL angelegt und habe extra darauf geachtet, dass UTF-8 als Charset verwendet wird:
    Code:
    CREATE TABLE chat (...) DEFAULT CHARSET=utf-8;
    Heute habe ich testweise 10 Sonderzeichen aneinander gehängt und wollte sie der Tabelle hinzufügen, um zu sehen, ob diese verwendet werden können. Ich brauche Sonderzeichen nämlich für einen Chat, den ich erstellen möchte.
    Ich habe folgenden Code in die MySQL-Kommandozeile eingegeben:
    Code:
    INSERT INTO chat VALUES ("!§$%&/()=?");
    Nachdem ich Enter gedrückt hatte, wurde mir eine komische Art des Pfeils angezeigt:
    Code:
    ">
    Ich konnte die Query nicht weiter ausführen und der einzige Weg, aus diesem Desaster herauszukommen, war Strg+C zu drücken, um MySQL zu schließen.
    Kann man überhaupt Sonderzeichen in einer Tabelle verwenden? Gibt es ein Limit an Sonderzeichen? Oder ist das ein komischer Bug?

    Ich verwende MariaDB Version 10.4.11 in Windows 10.

    Vielen Dank im Voraus

  • #2
    Sicher gehen auch Sonderzeichen, wäre ja schlimm wenn Japaner keine DB nutzen könnten.
    Was bei dir schief läuft weis ich mangels Code und ohne DB Dump leider nicht.

    Kommentar


    • #3
      Zitat von protestix Beitrag anzeigen
      Sicher gehen auch Sonderzeichen, wäre ja schlimm wenn Japaner keine DB nutzen könnten.
      Was bei dir schief läuft weis ich mangels Code und ohne DB Dump leider nicht.
      aber ich

      Ich mache es mal in PG nach:

      Code:
      test=*# create table chat( t text);
      CREATE TABLE
      test=*# INSERT INTO chat VALUES ("!§$%&/()=?");
      FEHLER:  Spalte »!§$%&/()=?« existiert nicht
      LINE 1: INSERT INTO chat VALUES ("!§$%&/()=?");
                                       ^
      test=*#
      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

      Kommentar


      • #4
        Code:
        MariaDB [test]> CREATE TABLE chat ( foo VARCHAR(255) ) DEFAULT CHARSET=utf8;
        Query OK, 0 rows affected (0.048 sec)
        
        MariaDB [test]> INSERT INTO chat VALUES ("!§$%&/()=?");
        Query OK, 1 row affected (0.014 sec)
        
        MariaDB [test]> SELECT * FROM chat;
        +------------+
        | foo        |
        +------------+
        | !§$%&/()=? |
        +------------+
        1 row in set (0.002 sec)

        Kommentar


        • #5
          *shrug*, ich dachte es könnte an den " liegen ...
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Zitat von hellbringer Beitrag anzeigen
            Code:
            MariaDB [test]> CREATE TABLE chat ( foo VARCHAR(255) ) DEFAULT CHARSET=utf8;
            Query OK, 0 rows affected (0.048 sec)
            
            MariaDB [test]> INSERT INTO chat VALUES ("!§$%&/()=?");
            Query OK, 1 row affected (0.014 sec)
            
            MariaDB [test]> SELECT * FROM chat;
            +------------+
            | foo |
            +------------+
            | !§$%&/()=? |
            +------------+
            1 row in set (0.002 sec)
            Ich habe den Code ausprobiert und habe sogar versucht, den Delimiter vorher zu ändern, aber es passiert leider immer noch dasselbe:
            Code:
            MariaDB [montemanager]> DELIMITER g
            MariaDB [montemanager]> INSERT INTO chat VALUES ("!§$%&/()=?")g
                "> g
                "> g
                "> ;
                ">

            Kommentar


            • #7
              Code:
              MariaDB [test]> DELIMITER g
              MariaDB [test]> INSERT INTO chat VALUES ("!§$%&/()=?")g
              Query OK, 1 row affected (0.003 sec)

              Kommentar


              • #8
                Hallo hellbringer,

                Komisch, dass es bei dir funktioniert. Welche MariaDB Version verwendest du?

                Viele Grüße

                Kommentar


                • #9
                  Hast du übrigens das beachtet?

                  If the ANSI_QUOTES SQL mode is enabled, string literals can be quoted only within single quotation marks because a string quoted within double quotation marks is interpreted as an identifier.
                  https://dev.mysql.com/doc/refman/8.0...-literals.html

                  Ich würde also von der Verwendung von doppelten Hochkommas abraten.

                  Kommentar


                  • #10
                    Hallo Hellbringer,

                    Wenn ich ' verwende, kommt das gleiche heraus, mit dem einzigen Unterschied, dass die " Zeichen mit ' ersetzt werden, etwa so:

                    Code:
                    '>
                    Könnte es sein, dass das etwas mit XAMPP zu tun hat? Ich verwende MariaDB nämlich über XAMPP:

                    Code:
                    \xampp\mysql\bin\mysql.exe -u root
                    Ich verwende die XAMPP Version 3.2.4.

                    Viele Grüße!

                    Kommentar


                    • #11
                      Code:
                      mysql  Ver 15.1 Distrib 10.4.11-MariaDB, for Win64 (AMD64), source revision 7c2c420b70b19cc02b5281127205e876f3919dad

                      Kommentar


                      • #12
                        Liebes PHP.de-Forum,

                        Ich wollte gerade meinen gesamten Code zusammenfügen und ihn einschicken, da kommt folgende Nachricht:

                        Code:
                        INSERT INTO test VALUES ('!§$%&/()=?', 'Test');
                        Query OK, 1 row affected (0.006 sec)
                        Komisch, oder? Ich habe keine Ahnung, warum es jetzt wieder geht. Vielleicht wurde der Bug behoben.

                        Trotzdem vielen Dank fürs Helfen!

                        Kommentar


                        • #13
                          Code:
                           
                           CREATE TABLE chat ( foo VARCHAR(255) ) DEFAULT CHARSET=utf8;
                          Wenn man ein Chat umsetzen möchte, bietet sich hier utf8mb4 (Mittlerweile auch der standard Zeichensatz) an, da sonst keine Emojies gespeichert werden können.

                          Kommentar

                          Lädt...
                          X