今天在开发当中有一条使用count()的SQL语句出现错误,具体语句如下:
SELECT COUNT (1) FROM sys_user_office a WHERE a.COMPANY_ID = ? AND a.ROLE_ID = 'officeadmin' AND a.DEL_FLAG = 0 AND a.USER_ID = ?
刚开始报错没有execute权限,理所当然认为是权限问题,当时都还是想,明明给用户授权select了啊,难道一个查询语句还要授权execute?但是没想那么多,既然mysql说我有错误就有错误吧。于是给用户授权execute。但是后面又开始报这个错误。
nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: FUNCTION emstest.COUNT does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
心想真是X了狗了。仔细一看错误信息,为什么会说没有count function呢。难道mysql连sql标准都不准信了???count都不提供???心里一万个想不通。后来仔细看一看报错的sql,发现count 和 (1)之间有一个空格,是不是因为这个原因?遂去掉空格试一试,果然可以。问题瞬间结局。
后记:纯手写sql要注意了。很多细节地方需要注意。