Driver requires declaration of procedure to either
时间:2007-01-31 来源:gladness
java.sql.SQLException: Driver requires declaration of procedure to either contain a '\nbeg
in' or '\n' to follow argument declaration, or SELECT privilege on mysql.proc to parse col
umn types.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1364)
at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:3670)
at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:702)
at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:513)
at com.mysql.jdbc.Connection.parseCallableStatement(Connection.java:4422)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4496)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4470)
at test.ProcedureTest.main(ProcedureTest.java:40)
jdbc调用MySQL存储过程时,需要mysql.proc的查询权限。如果只使用mysql客户端执行存储,是不会出这个错的。出现上述错误则需要
grant select on mysql.proc to '用户名'@'主机名';
把该权赋给应用程序连接MySQL的帐号。如果赋了权限后,还有同样问题,那么是赋错帐号了。MySQL的帐号与其他数据库的帐号概念是不同的。同一个用户名从不同机器上连接过来,被当成不同的帐号。而对MySQL不太熟悉的人,往往对此也不了解。
in' or '\n' to follow argument declaration, or SELECT privilege on mysql.proc to parse col
umn types.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1364)
at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:3670)
at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:702)
at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:513)
at com.mysql.jdbc.Connection.parseCallableStatement(Connection.java:4422)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4496)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4470)
at test.ProcedureTest.main(ProcedureTest.java:40)
jdbc调用MySQL存储过程时,需要mysql.proc的查询权限。如果只使用mysql客户端执行存储,是不会出这个错的。出现上述错误则需要
grant select on mysql.proc to '用户名'@'主机名';
把该权赋给应用程序连接MySQL的帐号。如果赋了权限后,还有同样问题,那么是赋错帐号了。MySQL的帐号与其他数据库的帐号概念是不同的。同一个用户名从不同机器上连接过来,被当成不同的帐号。而对MySQL不太熟悉的人,往往对此也不了解。
相关阅读 更多 +