FUNCTION myproc does not exist com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: FUNCTION myproc does not exist at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477) at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1422) at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1589) at com.mysql.jdbc.DatabaseMetaData.getProcedureOrFunctionColumns(DatabaseMetaData.java:4136) at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:4073) at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:828) at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:626) at com.mysql.jdbc.CallableStatement.getInstance(CallableStatement.java:519) at com.mysql.jdbc.ConnectionImpl.parseCallableStatement(ConnectionImpl.java:3916) at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:4000) at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:3974) at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.prepareCall(DelegatingConnection.java:275) at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareCall(PoolingDataSource.java:292)
I have set the permission: GRANT ALL ON mydb.* TO 'root'@'%' IDENTIFIED BY 'xxxx'; And When I execute Show Create Procedure mydb.myproc; I am able to see the entire body of the procedure. 楼上的,满意了?
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: FUNCTION myproc does not exist
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2477)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1422)
at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1589)
at com.mysql.jdbc.DatabaseMetaData.getProcedureOrFunctionColumns(DatabaseMetaData.java:4136)
at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:4073)
at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:828)
at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:626)
at com.mysql.jdbc.CallableStatement.getInstance(CallableStatement.java:519)
at com.mysql.jdbc.ConnectionImpl.parseCallableStatement(ConnectionImpl.java:3916)
at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:4000)
at com.mysql.jdbc.ConnectionImpl.prepareCall(ConnectionImpl.java:3974)
at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.prepareCall(DelegatingConnection.java:275)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareCall(PoolingDataSource.java:292)
不定时的出现?
如果server端没有明显的错误消息出话,基本上可以算是mysql jdbc的bug了。
你在mysql的客户端工具里面 执行函数,报错吗?
这是什么意思?这个sp在mysql下调用是没问题的,也有权限
很简单,用mysql的客户端工具,执行下 db.func1(p1); 能run通,就证明是java程序的问题了。
楼主还是帖代码吧,估计是代码写的有问题。
这java代码还真不是我写的mysql代码我研究无数次了,很简单的一个select语句,我直接在mysql下执行千万次都没出错。但Java人员不知道这是什么问题,只能向我求救,我也不知道这是什么问题,所以向大家求救还需要什么代码,我一起放上来
光在这里猜测,不会出什么结果的。
我也不是第一天玩mysql,如果看日志能看出问题,我是不会来提问的……
问题摆在那里,我要的是解决问题的方法,目前找到的规律是每次重启mysql的第一次就会有这种情况
如果是windows平台,并且 是服务方式启动,建议看看event viewer里记录了些什么,其它情况下,可以看看详细的error log。
如果什么都没有,你可以把你的mysql版本号,运行的操作系统,以及jconnector的版本号报上来。