Java JDBC抛出MySQL语法异常,尽管查询有效

Java JDBC抛出MySQL语法异常,尽管查询有效,java,mysql,jdbc,Java,Mysql,Jdbc,大家好,乐于助人的人 我在一个基于mysqldump创建新db模式的应用程序中有一小部分。 相关部分如下所示: log.info(“=设置基本数据库”); //执行转储中的每个命令 for(字符串查询:dump.split(“;”)){ 语句。执行(查询); } 这很好,但有些语句会出现以下情况 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“ot_su

大家好,乐于助人的人

我在一个基于mysqldump创建新db模式的应用程序中有一小部分。 相关部分如下所示:

log.info(“=设置基本数据库”);
//执行转储中的每个命令
for(字符串查询:dump.split(“;”)){
语句。执行(查询);
}
这很好,但有些语句会出现以下情况

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“ot_subtotal.php”附近使用的正确语法
本例中的查询是

插入'configuration'值中(194,'MODULE_ORDER_TOTAL_INSTALLED','ot_subtotal.php;ot_discount.php;ot_coupon.php;ot_shipping.php;ot_cod_fee.php;ot_subtotal_no_tax.php;ot_tax.php;ot_TOTAL_netto.php;ot_TOTAL.php',6,0,NULL,'2016-06-17 15:27:24',NULL);
如果我将字符串“'ot_subtotal.php;ot_discount.php;ot_coupon.php;ot_shipping.php;ot_cod_fee.php;ot_gv.php;ot_subtotal_no_tax.php;ot_total_netto.php;ot_total.php”替换为类似于“hello world”的内容,它会在稍后的另一个查询中工作并中断

问题是,我可以通过终端命令“mysql…
有什么想法吗?

这是因为

for (String query : dump.split(";")) {
    statement.execute(query);
}
您正在拆分
导致查询不完整

例如:

INSERT INTO `configuration` VALUES (194,'MODULE_ORDER_TOTAL_INSTALLED','ot_subtotal.php;ot_discount.php;ot_coupon.php;ot_shipping.php;ot_cod_fee.php;ot_gv.php;ot_subtotal_no_tax.php;ot_tax.php;ot_total_netto.php;ot_total.php',6,0,NULL,'2016-06-17 15:27:24',NULL,NULL);
拆分后的上述查询将被删除

INSERT INTO `configuration` VALUES (194,'MODULE_ORDER_TOTAL_INSTALLED','ot_subtotal.php

这是不正确的

这是因为

for (String query : dump.split(";")) {
    statement.execute(query);
}
您正在拆分
导致查询不完整

例如:

INSERT INTO `configuration` VALUES (194,'MODULE_ORDER_TOTAL_INSTALLED','ot_subtotal.php;ot_discount.php;ot_coupon.php;ot_shipping.php;ot_cod_fee.php;ot_gv.php;ot_subtotal_no_tax.php;ot_tax.php;ot_total_netto.php;ot_total.php',6,0,NULL,'2016-06-17 15:27:24',NULL,NULL);
拆分后的上述查询将被删除

INSERT INTO `configuration` VALUES (194,'MODULE_ORDER_TOTAL_INSTALLED','ot_subtotal.php
这是不正确的

而不是

dump.split(";")
使用

如果您以正常方式创建转储文件。

而不是

dump.split(";")
使用


如果您以正常方式创建转储文件。

哎哟,太明显了。谢谢你的快速帮助()很高兴帮了你:)哎哟,太明显了。谢谢你的快速帮助()很高兴帮助了你:)