环境:
mysql 5.0.27(部署在linux2.6.9-22.0.1_svr_10smp #1 SMP)windows机器上运行程序通过jdbc访问mysql(linux上的),创建触发器正常.但是在linux本机通过jdbc访问mysql报错,
即使授权SUPER(
GRANT SUPER ON *.* TO bt3@"%"   IDENTIFIED BY 'bt3';          
flush privileges;
)还报错:
CREATE  TRIGGER trigger_App_custom200 AFTER INSERT  ON app_AssetCustomInfo200 FOR EACH ROW BEGIN update app_AssetBasicInfo set Title=NEW.File_Name,ArchiveID=NEW.ArchNo,KeepTime=NEW.Storage_Life,FillingYear=NEW.FileYear,SecurityClass=NEW.Secret_Level,FondsNo=NEW.Comp_Totalsect,ArchiveUnit=NEW.Archive_Unit,CompSort=NEW.Comp_Sort,CompCategory=NEW.Comp_Category,CompContent=NEW.Comp_Content, CompVol=NEW.Comp_Vol,StorageUnit=NEW.Storage_Unit,HuaKong=NEW.Hua_Kong,CanLend=NEW.Can_Brrw,CopiesAvailable=NEW.Can_BrrwCopies,copies=NEW.CanCopies,AssetStatus=NEW.StatusBT where ID= NEW.ID; end;
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Access denied; you need the SUPER privilege for this operation
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1536)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1626)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3025)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2954)
        at com.mysql.jdbc.Statement.execute(Statement.java:681)
        at com.founder.fdam.database.MYSQLDBManager.DDLExecuteDBSQL(MYSQLDBManager.java:583)
        at com.founder.fdam.database.MYSQLDBManager.DDLAddTrigger(MYSQLDBManager.java:1477)
        at com.founder.fdam.database.DBUtil.DDLCreateAssetCategoryFromModule(DBUtil.java:618)
        at com.founder.farch.attribute.CategoryUse.fnAddNewCategory(CategoryUse.java:1813)
        at com.founder.farch.attribute.CategoryUse.AddOneAssetCategory(CategoryUse.java:1680)
        at org.apache.jsp.jsp.sysmanage.sysattribute.writeCategory_jsp._jspService(org.apache.jsp.jsp.sysmanage.sysattribute.writeCategory_jsp:116)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at com.founder.botong.filters.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:170)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Unknown Source)

解决方案 »

  1.   

    据说mysql5.0.2版才开始支持触发器 
    jdbc版本:mysql-connector-java-5.0.0-beta-bin.jar
      

  2.   

    要单独授权.找到问题的解决办法了
    mysql> GRANT SUPER ON *.* TO bt3@"192.168.0.8"   IDENTIFIED BY 'bt3'; 
    Query OK, 0 rows affected (0.00 sec)mysql> GRANT SUPER ON *.* TO bt3@"localhost"   IDENTIFIED BY 'bt3'; 
    Query OK, 0 rows affected (0.00 sec)mysql> GRANT SUPER ON *.* TO bt3@"GuangDong"   IDENTIFIED BY 'bt3'; 
    Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;
    Query OK, 0 rows affected (0.02 sec)mysql> exit
    Bye