Java로 작성된 프로그램을 사용하여 일련의 파일을 구문 분석하고 sqlite를 사용하여 데이터베이스에 대한 정보를 저장합니다. 그것을 알고 보니java.sql.SQLException : 열 ID가 고유하지 않습니다.
Exception in thread "main" java.sql.SQLException: column id is not unique
at org.sqlite.DB.throwex(DB.java:370)
at org.sqlite.DB.executeBatch(DB.java:302)
at org.sqlite.PrepStmt.executeBatch(PrepStmt.java:93)
at DatabaseTest.main(DatabaseTest.java:43)
이 파일이 어떻게 든 내 코드에 서로 간섭했다 : 코드는 언젠가는이 예외를 얻을 때까지 잠시 동안 잘 작동하는 것 같다. 나는 여전히 같은 문제를 일으키는 작은 프로그램을 만들었다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class DatabaseTest {
public static void main(String[] args) throws SQLException {
System.out.println(new org.sqlite.JDBC().toString());
Connection conn = DriverManager.getConnection("jdbc:sqlite:my_file.sqlite");
Statement stat = conn.createStatement();
try {
stat.executeUpdate("drop table if exists my_table;");
stat.executeUpdate("create table my_table (id STRING UNIQUE, content STRING);");
PreparedStatement prep = conn.prepareStatement("insert into my_table values (?, ?);");
prep.setString(1, "0325E498"); // I keep this value same for all tests
prep.setString(2, "test1");
prep.addBatch();
//prep.setString(1, "0336E810"); // Gives error
//prep.setString(1, "0336E8100"); // Gives error
//prep.setString(1, "0336E8100000"); // Gives error
//prep.setString(1, "0336E8111111"); // Gives error
//prep.setString(1, "1336E811"); // Gives error
//prep.setString(1, "9336E811"); // Gives error
//prep.setString(1, "A336E811"); // OK!
//prep.setString(1, "111111111E811"); // Gives error
prep.setString(1, "111111111E311"); // Gives error
//prep.setString(1, "111111111E211"); // OK!
prep.setString(2, "test2");
prep.addBatch();
conn.setAutoCommit(false);
prep.executeBatch(); // Exception thrown here
conn.setAutoCommit(true);
} finally {
stat.close();
conn.close();
}
}
내 현재 maven 의존성 정보.
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
</dependency>
그래서 내가 잘못된 일을하고 있으며 대부분의 문자열에 대해이 기능이 작동합니까? 고유성은 간단하지 않은 방식으로 계산됩니까?
이 테스트/프로그램 중 여러 개를 동시에 실행하고 있습니까? – Perception