PSQLException: FEHLER: null-Wert in Spalte " verletzt not-null-constraint

Ich bin mit PostgreSQL 8.4.13 auf x86_64-pc-linux-gnu auf Debian 4.4.5-8, 64-bit.

Ich habe die folgende Tabelle:

CREATE TABLE users (
user_id             serial PRIMARY KEY NOT NULL,
name                varchar(200),
username            varchar(150),
password            varchar(150),
);

Dann mit einer Java-Anwendung, die ich ausführen den folgenden code:

String insertTableSQL = "INSERT INTO USERS"
                + "(name, username, password) VALUES"
                + "(?,?,?)";
PreparedStatement preparedStatement = DBCon.prepareStatement(insertTableSQL);
preparedStatement.setString(1, userInfo.get("name"));           
preparedStatement.setString(2, userInfo.get("username"));
preparedStatement.setString(3, userInfo.get("password")));

preparedStatement.executeUpdate();

Das Problem hier ist, dass die executeUpdate() generiert die folgende Ausnahme:

org.postgresql.util.PSQLException: ERROR: null value in column "user_id" violates not-null constraint

Komisch ist, wenn ich führen Sie die gleiche insert-Anweisung mithilfe von psql, erfolgreich ausgeführt wird.

Irgendwelche Ideen würde sehr geschätzt.

Danke.

  • Warum muss man 5 Fragezeichen und nur 3 setString? Auch Sie scheint zu sein, out of order...
  • Sie haben zu viele Fragezeichen in der sql-Anweisung (Angabe von 3 Spalten aber 5 bind-Parameter). Entweder fügen Sie id als eine Spalte einfügen und entfernen, ein Fragezeichen oder entfernen Sie die zusätzlichen Fragezeichen.
  • Danke für Eure Antworten! Die zusätzlichen Fragezeichen-und der out-of-order-Problem war ein copy-paste Fehler aufgrund einer änderung des Codes zu präsentieren, eine einfache version davon. Ich korrigierte es.
  • Der Fehler macht keinen Sinn, es sei denn, jemand umschreiben Ihre SQL-hinter Ihrem Rücken. Was passiert, wenn Sie (user_id, name, username, password) VALUES (DEFAULT, ?, ?, ?)?
InformationsquelleAutor Maestros | 2012-11-14
Schreibe einen Kommentar