【问题标题】:MySQL JDBC syntax error exceptionMySQL JDBC 语法错误异常
【发布时间】:2015-12-12 10:05:08
【问题描述】:

几个月前我有一个 MySQL 项目,最近我又开始使用它进行开发。但是,当它执行某些语句时,它会给出错误。 SQL语句为DELETE FROM table WHERE expires < DATE_ADD(NOW(), INTERVAL ? DAYS)

现在,这曾经有效。我也知道它背后的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();

【问题讨论】:

  • INTERVAL '?' DAYS 用单引号括起来,看看它是否可以这样工作或INTERVAL '? DAYS' 我不记得哪个是正确的
  • 他不应该需要引号,AFAIK。您能否向我们展示您用于进行 JDBC 调用的 Java 代码。相关部分就足够了。
  • “以前可以工作”——现在不行。还有什么变化?相信 Java 控制台 - 假设您的代码是错误的并深入研究原因。如果您忘记了“工作正常”这句话,您将取得更快的进步。从 MySQL 文档开始:dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

标签: mysql exception syntax


【解决方案1】:

尝试从DAYS中删除S,参考MySQL Reference Manual

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

select date_add(now(), interval 1 day); //Works
select date_add(now(), interval 1 days); //Doesn't work

【讨论】:

  • 我的天哪……成功了!我的语法错误消失了!我总是想念这些东西......
  • @Pocketkid2,编码愉快!
猜你喜欢
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
相关资源
最近更新 更多