你好,有帮助的人,
我在应用程序中创建了一个基于mysqldump的新数据库模式。 相关部分如下所示:
log.info("= setup basic database");
// Execute each command in the dump
for (String query : dump.split(";")) {
statement.execute(query);
}
这样可以正常工作,但有些陈述只是打破了
之类的东西com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''ot_subtotal.php' at line 1
在这种情况下的查询是
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);
如果我更换字符串"' 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'"喜欢"你好世界"它可以工作,稍后再打破另一个查询。
问题是,我能够通过终端命令" mysql ...<导入转储。 dump.sql"没问题。
有什么想法吗?
答案 0 :(得分:3)
这是因为
而发生的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
哪个不对。
答案 1 :(得分:2)
而不是
dump.split(";")
使用
dump.split(";\n")
如果您以正常方式创建转储文件。