Problem mit auto_increment
George
- datenbank
0 Sven Rautenberg0 Peter Pan0 Vinzenz Mai0 dedlfix
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
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
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
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
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
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
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
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
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
Hi!
Fleisch liegs am Süntax!?
Dös dengi au!
off:PP
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
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
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
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
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
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
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
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
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
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
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";