b***i 发帖数: 3043 | 1 建了一个简单的sping mvc,然后MySql数据库也开通了
结果,出现这个错误。是说不能select * from user? 这个可能是哪里的错误?
HTTP Status 500 - Request processing failed; nested exception is org.
springframework.jdbc.UncategorizedSQLException: StatementCallback;
uncategorized SQLException for SQL [select * from user]; SQL state [HY000];
error code [3013]; Forbidden command : SHOW WARNINGS; nested exception is
java.sql.SQLException: Forbidden command : SHOW WARNINGS |
b***i 发帖数: 3043 | 2 直接使用ResultSet rs= ps.executeQuery();可以看到结果,所以数据库本身没有问题
但是,如果userList = jdbcTemplate.query(sql, new UserRowMapper()); //99
则如下错误:
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:413)
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:468)
org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:478)
com.beingjavaguys.dao.UserDaoImpl.getUserList(UserDaoImpl.java:99)
这个错误是在jdbcTemplate.execute(StatementCallback action)那里抛的
;
【在 b***i 的大作中提到】 : 建了一个简单的sping mvc,然后MySql数据库也开通了 : 结果,出现这个错误。是说不能select * from user? 这个可能是哪里的错误? : HTTP Status 500 - Request processing failed; nested exception is org. : springframework.jdbc.UncategorizedSQLException: StatementCallback; : uncategorized SQLException for SQL [select * from user]; SQL state [HY000]; : error code [3013]; Forbidden command : SHOW WARNINGS; nested exception is : java.sql.SQLException: Forbidden command : SHOW WARNINGS
|
d****i 发帖数: 4809 | 3 What is your 'sql' string in the argument? What is your UserRowMapper class?
I think it may be related to your UserRowMapper implementation.
413)
【在 b***i 的大作中提到】 : 直接使用ResultSet rs= ps.executeQuery();可以看到结果,所以数据库本身没有问题 : 但是,如果userList = jdbcTemplate.query(sql, new UserRowMapper()); //99 : 则如下错误: : org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:413) : org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:468) : org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:478) : com.beingjavaguys.dao.UserDaoImpl.getUserList(UserDaoImpl.java:99) : 这个错误是在jdbcTemplate.execute(StatementCallback action)那里抛的 : : ;
|
b***i 发帖数: 3043 | 4 最后发现,handleWarnings(stmt);
原来京东不支持这个show warnings这个语句,所以默认的Logger会读取warning,然后
导致问题
413)
【在 b***i 的大作中提到】 : 直接使用ResultSet rs= ps.executeQuery();可以看到结果,所以数据库本身没有问题 : 但是,如果userList = jdbcTemplate.query(sql, new UserRowMapper()); //99 : 则如下错误: : org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:413) : org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:468) : org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:478) : com.beingjavaguys.dao.UserDaoImpl.getUserList(UserDaoImpl.java:99) : 这个错误是在jdbcTemplate.execute(StatementCallback action)那里抛的 : : ;
|
b***i 发帖数: 3043 | 5 结果最后出错的语句就是SHOW WARNINGS,还以为是要告诉我什么warning呢
最后自己继承了JdbcTemplate,然后干脆不读warning。这样,我还可以全局记录别的
warning。不过还是不很清楚京东如何记录log。
class?
【在 d****i 的大作中提到】 : What is your 'sql' string in the argument? What is your UserRowMapper class? : I think it may be related to your UserRowMapper implementation. : : 413)
|
d****i 发帖数: 4809 | 6 I think it's better not to subclass from JdbcTemplate but use it as a member
in your DAO class. The handleWarning() method is meant for lib developers
only since it's protected. So you shouldn't use it for catch warning. Any DB
error will be caught by DataAccessException anyway, so no worry.
【在 b***i 的大作中提到】 : 结果最后出错的语句就是SHOW WARNINGS,还以为是要告诉我什么warning呢 : 最后自己继承了JdbcTemplate,然后干脆不读warning。这样,我还可以全局记录别的 : warning。不过还是不很清楚京东如何记录log。 : : class?
|
b***i 发帖数: 3043 | 7 这个handlewarning是在所有execteQuery里面都有的,所以会自动执行,然后导致错误。
member
DB
【在 d****i 的大作中提到】 : I think it's better not to subclass from JdbcTemplate but use it as a member : in your DAO class. The handleWarning() method is meant for lib developers : only since it's protected. So you shouldn't use it for catch warning. Any DB : error will be caught by DataAccessException anyway, so no worry.
|
d****i 发帖数: 4809 | 8 没看过execute的源码,但是queryForxxx的所有方法都是throw DataAccessException,
所以handlewarning那个方法应该不是给应用开发者用的
误。
【在 b***i 的大作中提到】 : 这个handlewarning是在所有execteQuery里面都有的,所以会自动执行,然后导致错误。 : : member : DB
|
b***i 发帖数: 3043 | 9 handlewarning是在spring自动被呼叫的,而京东禁止get warnings,所以sql语句执行
完就出错,导致无法继续。
DataAccessException,
【在 d****i 的大作中提到】 : 没看过execute的源码,但是queryForxxx的所有方法都是throw DataAccessException, : 所以handlewarning那个方法应该不是给应用开发者用的 : : 误。
|