啥情况,不定时出现。java调用存储过程,抛异常,返回FUNCTION  does not exist

解决方案 »

  1.   

    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) 
      

  2.   

    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. 楼上的,满意了?
      

  3.   

    检查你的MYSQL的错误日志,看看有些什么信息以供分析。
      

  4.   


    不定时的出现?
    如果server端没有明显的错误消息出话,基本上可以算是mysql jdbc的bug了。
      

  5.   

    我也是怀疑啊jdbc啊,可没证据。谁遇到过类似情况
      

  6.   


    你在mysql的客户端工具里面 执行函数,报错吗?
      

  7.   

    FUNCTION myproc does not exist  存储过程和函数都是用户自定义存储代码块,都当做FUNCTION了。
      

  8.   


    这是什么意思?这个sp在mysql下调用是没问题的,也有权限
      

  9.   

    同时打开普通查询日志,跟踪看一下应用程序到底发送了些什么SQL语句到MYSQL。 99% 的原因是JAVA程序本身有问题。
      

  10.   


    很简单,用mysql的客户端工具,执行下 db.func1(p1); 能run通,就证明是java程序的问题了。
      

  11.   

    sigh, 这个问题还没解决吗?
    楼主还是帖代码吧,估计是代码写的有问题。
      

  12.   


    这java代码还真不是我写的mysql代码我研究无数次了,很简单的一个select语句,我直接在mysql下执行千万次都没出错。但Java人员不知道这是什么问题,只能向我求救,我也不知道这是什么问题,所以向大家求救还需要什么代码,我一起放上来
      

  13.   

    既然这样,就让“Java人员”写一个最简单的可以复现问题的一个独立程序,应该能看出来是什么问题。
    光在这里猜测,不会出什么结果的。
      

  14.   

    可惜你根本不愿意去看MYSQL的日志。
      

  15.   


    我也不是第一天玩mysql,如果看日志能看出问题,我是不会来提问的……
      

  16.   


    问题摆在那里,我要的是解决问题的方法,目前找到的规律是每次重启mysql的第一次就会有这种情况
      

  17.   


    如果是windows平台,并且 是服务方式启动,建议看看event viewer里记录了些什么,其它情况下,可以看看详细的error log。
    如果什么都没有,你可以把你的mysql版本号,运行的操作系统,以及jconnector的版本号报上来。