Mysql 您的SQL语法有错误(但没有错误)

Mysql 您的SQL语法有错误(但没有错误),mysql,jdbc,mariadb,Mysql,Jdbc,Mariadb,JDBC给了我这个错误 Grave:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 您的SQL语法有错误;检查手册 对应于要使用的正确语法的MariaDB服务器版本 near“插入到entitytwitterusertofollow 第2行的值(0,NULL,NULL,1018880775335436288,F 我有一个巨大的Java字符串,上面有数千行,如下所示: INSERT INTO `entitytwitteruser

JDBC给了我这个错误

Grave:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 您的SQL语法有错误;检查手册 对应于要使用的正确语法的MariaDB服务器版本 near“插入到
entitytwitterusertofollow
第2行的值(0,NULL,NULL,1018880775335436288,F

我有一个巨大的Java字符串,上面有数千行,如下所示:

INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,984815801063571456,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018880775335436288,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,845199742065827841,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018871764624035840,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,811280845638090752,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018804045635641344,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018784953839038464,FALSE,1);
但是,如果我调试、查看字符串、将其保存在文件中,然后将其导入到MariaDB中,则一切正常


JDBC有什么问题吗?

实际上,我使用了糟糕的代码

在JDBC中,我们应该使用
addBatch(sql);

for (...) {
    final String sql = "INSERT INTO `entitytwitterusertofollow` (ENTITYUSERID, ENTITYTWITTERCONCURRENT_ID) VALUES("+ id + "," + concurrent.getId() + ");";
    statement.addBatch(sql);
}

statement.executeBatch();
conn.commit(); // if needed

我用的是坏代码实际上

在JDBC中,我们应该使用
addBatch(sql);

for (...) {
    final String sql = "INSERT INTO `entitytwitterusertofollow` (ENTITYUSERID, ENTITYTWITTERCONCURRENT_ID) VALUES("+ id + "," + concurrent.getId() + ");";
    statement.addBatch(sql);
}

statement.executeBatch();
conn.commit(); // if needed

NUUL
?这是您的实际错误消息吗?如果是,那么NUUL显然是不正确的。如果不是,那么发布实际错误消息。我编辑了我的错误消息,我刚才确实修复了它,但它仍然不起作用,但在MySQL中工作正常…
NUUL
?这是您的实际错误消息吗?如果是,那么NUUL显然是不正确的如果不是,那么发布实际的错误消息。我编辑了我的错误消息,我刚才确实解决了这个问题,但它仍然不起作用,但在MySQL中它工作得很好…您不需要批量执行它,在循环中使用
executeUpdate
也会起作用(可能效率较低,但不一定)。是的,它正在工作,但我想使用这种方式性能会更好。如果我理解正确,它不会向数据库发送任何内容,直到
commit()
出现,
executeUpdate()
发送到它,但不立即提交…这解释了性能提升的原因。您不需要批量执行它,在循环中使用
executeUpdate
也会起作用(可能效率较低,但不一定)。是的,它正在工作,但我想使用这种方式性能会更好。如果我理解正确,它不会将任何内容发送到数据库,直到
commit()
出现,
executeUpdate()
发送到它,但不会立即提交…这解释了性能提高的原因。