MySQL: Daten in Tabelle eintragen schlägt fehl
-
Ich habe eine Tabelle folgendermaßen erstellt:
create table users ( user_id integer unsigned not null auto_increment, name varchar(30) not null , password varchar(30) not null , email varchar(60) not null, primary key(user_id));
Dann habe ich im Javaprogramm folgende Codezeile:
statement.execute("INSERT INTO users VALUES ('" + username + "','" + password + "','" + email + "')");
Dabei wird eine Exception geworfen.
java.sql.SQLException: Column count doesn't match value count at row 1
Warum passiert das? In der Konsole wird folgendes zurückgegeben:
mysql> insert into users values ('my_name','my_pass','email@email.de');
ERROR 1136 (21S01): Column count doesn't match value count at row 1- Ich versteh den Fehler nicht.
- Warum wird nicht automatisch eine user_id erzeugt und dann hochgezählt ?
-
statement.execute("INSERT INTO users VALUES ('" + username + "','" + password + "','" + email + "')");
Müsste die SQL-Abfrage nicht so lauten?:
INSERT INTO users (name, password, email) VALUES ('" + username + "','" + password + "','" + email + "')
-
Jepp, so muß es lauten. Danke.
-
Liegt daran das nur Values alle Spalten erwartet.
Du hast aber die erste Spalte user_id nicht angegeben.
Wenn man es so machen will dann gibt mann bei dieser dann ein VALUES (null,xxx an