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

    1. Ich versteh den Fehler nicht.
    2. 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


Anmelden zum Antworten