在整合derby数据库的时候,想要插入一条语句结果报错:
The number of values assigned is not the same as the number of specified or implied columns.
异常栈如下:
"C:\Program Files\Java\jdk1.8.0_181\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2020.3.2\lib\idea_rt.jar=54199:D:\Program Files\JetBrains\IntelliJ IDEA 2020.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_181\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar;D:\IdeaProject\spring_redis\target\classes;D:\Maven\org\springframework\boot\spring-boot-starter\2.7.1\spring-boot-starter-2.7.1.jar;D:\Maven\org\springframework\boot\spring-boot\2.7.1\spring-boot-2.7.1.jar;D:\Maven\org\springframework\spring-context\5.3.21\spring-context-5.3.21.jar;D:\Maven\org\springframework\spring-aop\5.3.21\spring-aop-5.3.21.jar;D:\Maven\org\springframework\spring-beans\5.3.21\spring-beans-5.3.21.jar;D:\Maven\org\springframework\spring-expression\5.3.21\spring-expression-5.3.21.jar;D:\Maven\org\springframework\boot\spring-boot-autoconfigure\2.7.1\spring-boot-autoconfigure-2.7.1.jar;D:\Maven\org\springframework\boot\spring-boot-starter-logging\2.7.1\spring-boot-starter-logging-2.7.1.jar;D:\Maven\ch\qos\logback\logback-classic\1.2.11\logback-classic-1.2.11.jar;D:\Maven\ch\qos\logback\logback-core\1.2.11\logback-core-1.2.11.jar;D:\Maven\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;D:\Maven\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;D:\Maven\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;D:\Maven\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\Maven\org\springframework\spring-core\5.3.21\spring-core-5.3.21.jar;D:\Maven\org\springframework\spring-jcl\5.3.21\spring-jcl-5.3.21.jar;D:\Maven\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;D:\Maven\com\auth0\java-jwt\3.10.3\java-jwt-3.10.3.jar;D:\Maven\com\fasterxml\jackson\core\jackson-databind\2.13.3\jackson-databind-2.13.3.jar;D:\Maven\com\fasterxml\jackson\core\jackson-annotations\2.13.3\jackson-annotations-2.13.3.jar;D:\Maven\com\fasterxml\jackson\core\jackson-core\2.13.3\jackson-core-2.13.3.jar;D:\Maven\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;D:\Maven\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;D:\Maven\org\apache\derby\derby\10.14.1.0\derby-10.14.1.0.jar" com.chen.util.DerbyTest
[FAIL_FILE]
已存在表
Exception in thread "main" java.sql.SQLSyntaxErrorException: The number of values assigned is not the same as the number of specified or implied columns.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeLargeUpdate(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source)
at com.chen.util.DerbyTest.main(DerbyTest.java:35)
Caused by: ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
... 4 more
Process finished with exit code 1
代码段如下:
package com.chen.util;
import java.sql.*;
import java.util.HashSet;
public class DerbyTest {
/**
* 以嵌入式(本地)连接方式连接数据库
*/
private static final String JDBC_URL = "jdbc:derby:derbyDB;create=true";
private static final String DRIVER_CLASS = "org.apache.derby.jdbc.EmbeddedDriver";
private static final String USER = "root";
private static final String PASSWORD = "root";
public static void main(String[] args) throws Exception {
//与数据库建立连接
Class.forName(DRIVER_CLASS);
Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
Statement statement = conn.createStatement();
String table = "FAIL_FILE";
DatabaseMetaData metaData = conn.getMetaData();
ResultSet res = metaData.getTables(null, null, null, new String[]{"TABLE"});
HashSet<String> hashSet = new HashSet<>();
while (res.next()){
hashSet.add(res.getString("TABLE_NAME"));
}
System.out.println(hashSet);
if(hashSet.contains(table)){
System.out.println("已存在表");
}else{
//创建表
statement.execute("CREATE TABLE FAIL_FILE (id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)primary key,FILE_PATH VARCHAR(255) DEFAULT NULL ,IS_DEL INT NOT NULL DEFAULT 0, UPDATE_TIME VARCHAR(30) DEFAULT NULL)");
//插入数据
}
statement.executeUpdate("INSERT INTO FAIL_FILE VALUES( 'data/file/123545.txt',0, '123456') ");
//查询数据
ResultSet resultSet = statement.executeQuery("select * from FAIL_FILE");
while (resultSet.next()) {
System.out.println(resultSet.getInt("id") + ", " + resultSet.getString("FILE_PATH") + ", " + resultSet.getString("IS_DEL"));
}
//关闭连接
statement.close();
conn.close();
}
}
需要把insert语句指定字段名修改为:
statement.executeUpdate("INSERT INTO FAIL_FILE (FILE_PATH,IS_DEL,UPDATE_TIME)VALUES( 'data/file/123545.txt',0, '123456') ");