sql语句 异常问题解决方案

  • 汇总mysql异常,以及对应的解决方案
    • 常见异常1:
    • 常见异常2:
    • 常见异常3:

汇总mysql异常,以及对应的解决方案

常见异常1:

[Err] 1064 - 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 ----
这种异常 不用多想,肯定是我们的sql语句出现问题,下面我只说我们经常犯的一种错误。

select和update语句最后加了逗号

解决方案:

  • 删掉最后一个逗号就可以。
  • update语句可以利用mybatis的 来写

常见异常2:

[Err] 1054 - Unknown column ‘----------’ in 'field list’
这种异常一般都是字段名称错误引起的。

这时候是我们的字段写错了 我们会发现数据库中并没有这个字段 而是我们的字段写错了。或者是因为字段名的大小写命名规范引起的不一致。

常见异常3:

MySQL同时执行多条SQL语句出现的异常。
Error updating database. Cause: 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 'UPDATE XXX

解决方案:
1.最简单的办法,在MySQL的连接字符串中设置allowMultiQueries参数置为true,
如:jdbc.url=jdbc:mysql://localhost:3306/ibatis?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 即可。
2、在程序中对SQL语句以分号拆分成多条SQL语句,然后使用Statement的addBatch方法,最后executeBatch就行(此处推荐使用PreparedStatement addBatch() and executeBatch() and clearBatch())。

综上是因为mysql的JDBC驱动不支持这种写法,不过sqlserver的倒是支持,oracle的jdbc中甚至都不能出现分号 否则报java.sql.SQLException: ORA-00911: invalid character异常。

PS:MySQL设置了允许同时执行多条SQL语句后,将存在SQL注入的风险。参见:http://www.plhwin/2014/06/13/web-security-sql/

更多推荐

sql语句常见异常问题解决方案。