2015-09-16 38 views
1

我有幾個月前曾參與過的這個MySQL項目,最近我又回到了開發階段。但是,當它執行某些語句時,會發生錯誤。 SQL語句是DELETE FROM table WHERE expires < DATE_ADD(NOW(), INTERVAL ? DAYS)MySQL JDBC語法錯誤異常

現在,這用於工作。我也知道它背後的Java代碼正在工作,因爲沒有其他例外。另外,我將該語句插入到SQL客戶端,並給出了類似的錯誤。

在Java控制檯中的錯誤是這樣的: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 'DAYS)' at line 1 然後堆棧跟蹤這使我的代碼,在一份聲明中稱executeUpdate()行。

我不記得自從我開發之前更新或改變很多,它工作正常。

編輯:我的java代碼是這樣的: add(37, "DELETE FROM table WHERE expires < DATE_ADD(NOW(), INTERVAL ? DAYS)");函數add()正在調用給定字符串上的connection.prepareStatement()並將其放入PreparedStatements數組中。是拋出異常的行爲statements[37].executeUpdate();

+0

'區間 '?' DAYS'用單引號包裝這些日子,看看它是以這種方式工作還是'INTERVAL'? DAYS''我不記得哪一個是正確的 –

+0

他不應該在那裏引用AFAIK。您能否向我們展示您用來進行JDBC調用的Java代碼。相關部分應該足夠了。 –

+1

「曾經工作」 - 現在不是。還有什麼改變?相信Java控制檯 - 假設你的代碼是錯誤的,並挖掘原因。如果你忘記了「工作正常」這句話,你會更快地取得進展。從MySQL文檔開始:https://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html – duffymo

回答

1

嘗試從DAYS刪除S,指MySQL Reference Manual

DELETE FROM table WHERE expires < DATE_ADD(NOW(), INTERVAL ? DAY)

+1

我的flippin gosh ...它的工作!我的語法錯誤消失了!我總是想念這些東西... – Pocketkid2

+0

@Pocketkid2,開心編碼! –