George: Problem mit auto_increment

Hallo,

ich möchte in meiner MYSQL Tabelle automatisch eine ID zu jeder Zeile speichern lassen.
Laut MYSQL Manual und diversen Forenbeiträgen geht das mit:

CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

daraufhin erhalte ich folgende Fehlermeldung:

Unexpected token: AUTO_INCREMENT in statement [CREATE TABLE blablubb (ID INT NOT NULL AUTO_INCREMENT]

Archivsuche und google konnten leider nicht helfen.

Kann jemand helfen?
Grüße
George

  1. Moin!

    ich möchte in meiner MYSQL Tabelle automatisch eine ID zu jeder Zeile speichern lassen.
    Laut MYSQL Manual und diversen Forenbeiträgen geht das mit:

    CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

    daraufhin erhalte ich folgende Fehlermeldung:

    Unexpected token: AUTO_INCREMENT in statement [CREATE TABLE blablubb (ID INT NOT NULL AUTO_INCREMENT]

    Bastelst du dir das Create-Statement selbst? Dann hast du vermutlich einen Fehler eingebaut.

    Ich empfehle: PHPMyAdmin (oder ein anderes Admin-Tool) zur Hand nehmen und solche einmaligen Vorgänge mit der dadurch angebotenen Oberfläche lösen. Ist deutlich weniger fehleranfällig.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Das läuft innerhalb eines Java Servlets und soll nach Möglichkeit auch dort bleiben. Die DB läuft ansonsten einwandfrei. Ich benötige jetzt aber eine laufende ID. MYSQL bringt die ID Vergabe ja auch mit, ich bin nur zu doof sie zu benutzen ;).

      Wie du sagst, ich habe vermutlich einen Fehler eingebaut und mich interessiert welcher ;). Ohne ID werden alle tables einwandfrei erstellt.

      Grüße
      George

      Moin!

      ich möchte in meiner MYSQL Tabelle automatisch eine ID zu jeder Zeile speichern lassen.
      Laut MYSQL Manual und diversen Forenbeiträgen geht das mit:

      CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

      daraufhin erhalte ich folgende Fehlermeldung:

      Unexpected token: AUTO_INCREMENT in statement [CREATE TABLE blablubb (ID INT NOT NULL AUTO_INCREMENT]

      Bastelst du dir das Create-Statement selbst? Dann hast du vermutlich einen Fehler eingebaut.

      Ich empfehle: PHPMyAdmin (oder ein anderes Admin-Tool) zur Hand nehmen und solche einmaligen Vorgänge mit der dadurch angebotenen Oberfläche lösen. Ist deutlich weniger fehleranfällig.

      • Sven Rautenberg
      1. Hello,

        CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

        Du hast aber bestimmt auch nur eine Spalte vom SubType Autoincrement?

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi,

          ich schaffe es nichtmal die Tabelle mit nur einer Spalte zu erzeugen. Mein mysql kann mit auto_increment irgendwie nix anfangen :-/

          Hello,

          CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

          Du hast aber bestimmt auch nur eine Spalte vom SubType Autoincrement?

          Ein harzliches Glückauf

          Tom vom Berg

          1. Hello,

            ich schaffe es nichtmal die Tabelle mit nur einer Spalte zu erzeugen. Mein mysql kann mit auto_increment irgendwie nix anfangen :-/

            Und Du bist sicher, dass Du MySQL hast und auch die passende API dafür benutzt?
            Ist es vielleicht MSSQL?
            Welche Version ist es es denn?

            select version();

            sollte Auskunft geben!

            Hast Du einen Client (Konsole) für das MySQL oder wie kommunizierst Du damit?

            Ein harzliches Glückauf

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
  2. Hi!

    CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

    der Rest wäre auch wichtig!
    Ist id Primary Key?
    Wenn nicht, dann mag mySQL das gar nicht!

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. Hi,

      die Zeilen:
      CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50));
      und
      CREATE TABLE blablubb (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, text CHAR(50) ...)

      werfen den selben Fehler aus:
      Unexpected token: AUTO_INCREMENT in statement [CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT]
      bzw.
      Unexpected token: AUTO_INCREMENT in statement [CREATE TABLE blalubb (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT]

      Grüße
      George

      PS: Ich bin echt ziemlich ratlos :(
      Scheinbar hab auch nur ich das problem

      Hi!

      CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

      der Rest wäre auch wichtig!
      Ist id Primary Key?
      Wenn nicht, dann mag mySQL das gar nicht!

      off:PP

      1. Hi,

        die Zeilen:
        CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50));
        und
        CREATE TABLE blablubb (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, text CHAR(50) ...)

        werfen den selben Fehler aus:

        Fleisch liegs am Süntax!?

        CREATE TABLE testzzz (
          zz bigint(20) NOT NULL auto_increment,
          er varchar(100) NOT NULL default '',
          PRIMARY KEY  (zz)
        ) TYPE=MyISAM;

        Hotti

        1. Hi!

          Fleisch liegs am Süntax!?

          Dös dengi au!

          off:PP

          --
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
          1. Dann sind wir schon zu dritt!

            Hottis Syntax ruft genau den gleichen Fehler hervor... einziger unterschied, ich muss int oder bigint statt bigint(20) verwenden. bigint(20) bringt auch nen Syntax Error.
            Grüße
            George

            Hi!

            Fleisch liegs am Süntax!?

            Dös dengi au!

            off:PP

            1. Dann sind wir schon zu dritt!

              Hottis Syntax ruft genau den gleichen Fehler hervor... einziger unterschied, ich muss int oder bigint statt bigint(20) verwenden. bigint(20) bringt auch nen Syntax Error.

              Mein create-Statement funktioniert bei mir. Sei sogut und schreib Deines mal komplett hier auf.

              Hotte

              1. Innerhalb meiner Java Klasse:
                statement.execute("create table kunden(id int primary key auto_increment,vorname varchar(80),nachname varchar(80))");

                sowas wie:
                statement.execute("create table kunden(vorname varchar(80),nachname varchar(80))");

                funktioniert.
                Mein MySQL kennt auto_increment an dieser Stelle nicht :(

                Dann sind wir schon zu dritt!

                Hottis Syntax ruft genau den gleichen Fehler hervor... einziger unterschied, ich muss int oder bigint statt bigint(20) verwenden. bigint(20) bringt auch nen Syntax Error.

                Mein create-Statement funktioniert bei mir. Sei sogut und schreib Deines mal komplett hier auf.

                Hotte

                1. Innerhalb meiner Java Klasse:
                  statement.execute("create table kunden(id int primary key auto_increment,vorname varchar(80),nachname varchar(80))");

                  sowas wie:
                  statement.execute("create table kunden(vorname varchar(80),nachname varchar(80))");

                  funktioniert.
                  Mein MySQL kennt auto_increment an dieser Stelle nicht :(

                  Und ich kanns in Deinem Statement auch mit Brille nicht sehen.

                  Hotte

                  1. Ich benutze hsqldb, mysql war nicht ganz richtig... Liegt wahrscheinlich daran oder? Gibts es da kein auto_increment oder heisst es nur bisschen anders?
                    Grüße
                    George

                    Innerhalb meiner Java Klasse:
                    statement.execute("create table kunden(id int primary key auto_increment,vorname varchar(80),nachname varchar(80))");

                    sowas wie:
                    statement.execute("create table kunden(vorname varchar(80),nachname varchar(80))");

                    funktioniert.
                    Mein MySQL kennt auto_increment an dieser Stelle nicht :(

                    Und ich kanns in Deinem Statement auch mit Brille nicht sehen.

                    Hotte

                    1. Moin!

                      Ich benutze hsqldb, mysql war nicht ganz richtig... Liegt wahrscheinlich daran oder? Gibts es da kein auto_increment oder heisst es nur bisschen anders?

                      Zwischen Datenbanken ist - außer der grundlegenden Syntax - so gut wie nichts genormt, jede DB hat andere Keywords, andere Features, andere Syntax.

                      Wundere dich also nicht, wenn hsqldb was nicht kann, was bei MySQL Standard ist. Das auto_increment ist meines Wissens in allen anderen Datenbanken so nie implementiert.

                      Mit anderen Worten: Konsultiere die Doku.

                      - Sven Rautenberg

                      --
                      "Love your nation - respect the others."
                    2. By George,

                      Ich benutze hsqldb, mysql war nicht ganz richtig... Liegt wahrscheinlich daran oder? Gibts es da kein auto_increment oder heisst es nur bisschen anders?

                      RTFM!

                      Beachte bitte nächstens die speziellen Hinweise, die bei der Auswahl des Themenbereichs Datenbank erscheinen. Diese stehen nicht ohne Grund da.

                      Entsetzte Grüße

                      Vinzenz

                    3. Hello,

                      Ich benutze hsqldb, mysql war nicht ganz richtig... Liegt wahrscheinlich daran oder? Gibts es da kein auto_increment oder heisst es nur bisschen anders?

                      *rarara*  :-)

                      CREATE [MEMORY | CACHED | [GLOBAL] TEMPORARY | TEMP [2] | TEXT[2]] TABLE <name>
                          ( <columnDefinition> [, ...] [, <constraintDefinition>...] )
                          [ON COMMIT {DELETE | PRESERVE} ROWS];

                      columnname Datatype [(columnSize[,precision])]
                          [{DEFAULT <defaultValue> |
                          GENERATED BY DEFAULT AS IDENTITY
                          (START WITH <n>[, INCREMENT BY <m>])}] |
                          [[NOT] NULL] [IDENTITY] [PRIMARY KEY]

                      Ein harzliches Glückauf

                      Tom vom Berg

                      --
                      Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de
                2. Hello,

                  Innerhalb meiner Java Klasse:
                  statement.execute("create table kunden(id int primary key auto_increment,vorname varchar(80),nachname varchar(80))");

                  sowas wie:
                  statement.execute("create table kunden(vorname varchar(80),nachname varchar(80))");

                  funktioniert.
                  Mein MySQL kennt auto_increment an dieser Stelle nicht :(

                  Das klingt nach Kontakt zur Datenbank per ODBC und da könntest Du tatsächlich ein Problem haben.
                  Manche Sachen gehen per ODBC einfach nicht. Kann sein, dass sich das inzwischen etwas gebessert hat, aber ich erinnere mich noch gut an unsere eigenen krampfhaften Versuche und nachher stand irgendwo explizit: "Autoincrement wird nicht unterstützt"

                  Da müssten sich jetzt diejenigen nochmal einschalten, die voll im Thema stehen.

                  Ich wollte nur die Vermutung nicht unterschlagen.

                  Ein harzliches Glückauf

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de
  3. Hallo George,

    Laut MYSQL Manual und diversen Forenbeiträgen geht das mit:

    CREATE TABLE blablubb (id INT NOT NULL AUTO_INCREMENT, text CHAR(50) ...)

    nein, ganz gewiss steht das *nicht* so im Handbuch.

    daraufhin erhalte ich folgende Fehlermeldung:

    Unexpected token: AUTO_INCREMENT in statement [CREATE TABLE blablubb (ID INT NOT NULL AUTO_INCREMENT]

    Ich bekomme für

      
    CREATE TABLE example (  
        id INT NOT NULL AUTO_INCREMENT,  
        wert CHAR(50)  
    )
    

    die Fehlermeldung:

    Incorrect table definition; there can be only one auto column
        and it must be defined as a key

    wie bereits angesprochen.

      
    CREATE TABLE example (  
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,  
        wert CHAR(50)  
    )
    

    wird von meiner MySQL 5.0.45 sowohl unter Windows als auch unter Debian problemlos ausgeführt - unabhängig, ob ich den MySQL-Query-Browser oder den Kommandozeilenclient verwende.

    Ich kann daher Dein Problem überhaupt nicht nachvollziehen.
    Welchen Client in welcher Version verwendest Du.

    Den Namen text, obwohl kein reserviertes Wort, halte ich wegen des Spaltentyps TEXT für ungünstig. Daran liegt es jedoch nicht. Du machst etwas falsch :-)

    Copy & Paste des exakten Statements, das fehlschlägt, wäre hilfreich.

    Freundliche Grüße

    Vinzenz

  4. echo $begrüßung;

    ich möchte in meiner MYSQL Tabelle automatisch eine ID zu jeder Zeile speichern lassen.
    Unexpected token: AUTO_INCREMENT in statement [CREATE TABLE blablubb (ID INT NOT NULL AUTO_INCREMENT]

    Das ist keine MySQL-Fehlermeldung. Sie lässt sich weder auf der Handbuchseite Server Error Codes and Messages noch durch eine Suche nach "unexpected token" auf der MySQL-Seite finden.

    echo "$verabschiedung $name";