2017-03-08 46 views
0

我正在優化一些SQL查詢。我已經寫了他們使用批次。集成測試運行良好,並且一切都很開心。但後來我知道MySQL除非啓用rewriteBatchedStatements,否則不會提高性能。rewriteBatchedStatements引入語法錯誤

所以我修改了我的連接字符串以包含rewriteBatchedStatement,但是我開始得到一個MySQLSytaxErrorException。當我從連接字符串中刪除rewriteBatchedStatement時,異常消失。

SQL:INSERT INTO rawdata.scales (ID, NAME) VALUES (?, ?)

例外:

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 ';INSERT INTO rawdata.scales` at line 1

奇怪的是,這只是發生在,在我設置的測試運行的第一個SQL語句。所有其他人運行良好。

爲什麼啓用此功能會在我的SQL前面添加一個分號?

+0

請顯示您使用的代碼,而不僅僅是查詢。還要提到您正在使用的MySQL Connector/J的版本。 –

回答

1

Connector/J 5.1.40中至少包含5.1.43的一個已知問題,導致在啓用rewriteBatchedStatement時插入時會引發MySQLSytaxErrorException。

https://bugs.mysql.com/bug.php?id=84813

我已經能夠用尾隨分號,如轉載本文中陳述

INSERT INTO rawdata.scales (ID, NAME) VALUES (?, ?); 

刪除尾隨分號修復了我的情況中的問題。