2017-03-08 2 views
0

Ich optimiere einige SQL-Abfragen. Und ich habe sie geschrieben, um Chargen zu verwenden. Integrationstests laufen gut und alles ist glücklich. Aber dann lerne ich, dass MySQL keine Leistungssteigerung bringt, wenn rewriteBatchedStatements nicht aktiviert ist.rewriteBatchedStatements führt Syntax Error

Also änderte ich meine Verbindungszeichenfolge um rewriteBatchedStatement, aber ich bekomme eine MySQLSytaxErrorException. Wenn ich rewriteBatchedStatement aus der Verbindungszeichenfolge entferne, verschwindet die Ausnahme.

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

Ausnahme:

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

Merkwürdigerweise geschieht dies nur auf der ersten SQL-Anweisung, die in den Tests läuft ich Setup haben. Alle anderen laufen gut.

Warum sollte das Aktivieren dieser Funktion ein Semikolon an der Vorderseite meines SQL hinzufügen?

+0

Bitte zeigen Sie den Code, den Sie verwenden, und nicht nur die Abfrage. Erwähnen Sie auch die Version von MySQL Connector/J, die Sie verwenden. –

Antwort

1

Es gibt ein bekanntes Problem in Connector/J 5.1.40 bis einschließlich 5.1.43, das dazu führt, dass MySQLSytaxErrorException auf Einfügungen angewendet wird, wenn rewriteBatchedStatement aktiviert ist.

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

Ich konnte dies mit einem nachlauf Semikolon in Anweisungen reproduzieren, z.B.

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

den nachgestellten Semikolon Entfernen behebt das Problem in meinem Fall.

Verwandte Themen