0

主キーが自動インクリメント値であるデータベーステーブルがあります

独自に更新されるはずのこの値を挿入せずに、このテーブルにデータを挿入するにはどうすればよいですか

これは私のテーブルです:

CREATE TABLE IF NOT EXISTS 
Users(lastName CHAR(50) NOT NULL,
userID MEDIUMINT NOT NULL AUTO_INCREMENT,
phone CHAR(15),
email CHAR(50),
address CHAR(100),
authLevel INT NOT NULL DEFAULT 0, 
FOREIGN KEY(authLevel) REFERENCES Authorizations (authLevel),
login CHAR(30) NOT NULL UNIQUE,
firstName CHAR(50) NOT NULL,
 PRIMARY KEY (userID),password CHAR(30) NOT NULL);

これは私の挿入ステートメントです:

(firstName,lastName,login,password,address,email) VALUES(?,?,?,?,?,?)

これは私が得る例外です:

java.sql.SQLException: Field 'userID' doesn't have a default value
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at com.database.Main.main(Main.java:15)
4

2 に答える 2

1

そのままでは機能しないことに驚いていますが、null または 0 を userID の値として渡すと機能するはずです。

于 2013-08-10T17:35:54.297 に答える
0

同じ問題が発生しました。自動インクリメント列定義で DEFAULT 0 を追加することで問題を解決しました。

于 2013-08-11T18:44:17.870 に答える