Java insert语句中的自动增量字段出现问题

Java insert语句中的自动增量字段出现问题,java,mysql,jdbc,insert,Java,Mysql,Jdbc,Insert,我有一个数据库表,它的主键是一个自动递增的值 我如何将数据插入到这个表中,而不插入这个值,这个值应该自己更新 这是我的桌子: 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

我有一个数据库表,它的主键是一个自动递增的值

我如何将数据插入到这个表中,而不插入这个值,这个值应该自己更新

这是我的桌子:

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)

我很惊讶它不能按原样工作,但传递null或0作为userID的值应该可以让它工作。

我遇到了同样的问题。我通过在自动递增列定义中添加默认值0来解决这个问题。

这对我来说也很奇怪,因为我在其他平台上使用过它,并且根本不传递任何值,通常这样做,这是我第一次在java中看到这个。。。谢谢答案被接受,但让我问一下,您使用的是
PreparedStatement
?是的。这是为了让答案更长,你试过
preparedStatement.setString(1,“firstName”)?这正是我所做的,这是我收到的结果…statement.setString(editableColumns.indexOf(KEY\u FIRST\u NAME)+1,firstName);statement.setString(editableColumns.indexOf(KEY\u LAST\u NAME)+1,lastName);statement.setString(editableColumns.indexOf(KEY_LOGIN)+1,LOGIN);statement.setString(editableColumns.indexOf(KEY_PASSWORD)+1,PASSWORD);statement.setString(editableColumns.indexOf(KEY_ADDRESS)+1,ADDRESS);statement.setString(editableColumns.indexOf(KEY_EMAIL)+1,EMAIL);statement.setString(editableColumns.indexOf(KEY_PHONE)+1,PHONE);确保
editibleCol……
1
开始。