我正在使用 Java JDBC 连接到 MySQL 数据库并将数据加载到表中。从 GUI 界面(我使用的是 Navicat)运行时,Load in data 语句工作正常。但是当我采用相同的语句并将其放在一个文本文件中时它不起作用,然后我使用以下代码读取该文件:
public String readFile(String path, Charset encoding) throws IOException {
byte[] encoded = Files.readAllBytes(Paths.get(path));
return encoding.decode(ByteBuffer.wrap(encoded)).toString();
}
String hcccontent = readFile("resources/loadinhcc.txt", StandardCharsets.UTF_8);
String[] loadinhcc = hcccontent.split(regex);
for(int i = 0; i < loadinhcc.length; i++){
Statement stmt = conn.createStatement();
stmt.execute(loadinhcc[i]);
}
这很好,因为我什至逐步完成了提取我的 Java 程序解析的查询的代码,将其复制到 navicat 并加载了所有数据。当我运行它并让程序尝试执行时,我收到以下错误“第 1 行不包含所有列的数据”
我在网上搜索过,我看到的最接近可能导致此问题的是 MySQL 严格模式。如果输入长于表中指定的长度,则 MySQL 不会加载,或者如果所有列都没有数据,则可能不会加载。但由于查询在 Navicat 中有效,这将导致此问题是没有意义的。JDBC中是否有禁用严格模式的设置?还是我缺少其他东西?