`
445822357
  • 浏览: 740308 次
文章分类
社区版块
存档分类
最新评论

JDBC for MySQL驱动版本问题

 
阅读更多

对于低版本(3.1.8)的mysql驱动,其没有对int类型的字段做强制的非空检测,但是5.1版本为了安全增加了强制非空检测。这样当项目jdbc驱动包升级到5.1.16后会报如下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'XXXXXXXXXXX' cannot be null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1039)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1698)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1617)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at adultadmin.util.db.DbOperation.executeUpdate(DbOperation.java:237)
at adultadmin.action.balance.ImportOrderBalanceAction.execute(ImportOrderBalanceAction.java:266)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at adultadmin.util.filter.UserControlFilter.doFilter(UserControlFilter.java:109)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at adultadmin.util.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:139)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

由于项目中引入了两个版本,因此出现该问题在不同人机器上有不同表现,或者成功或者失败。最后将驱动包从项目中移除,然后放到tomcat/lib目录下解决。(原理可以参考tomcat类装载顺序,http://cailin.iteye.com/blog/151507,找到一个后不再加载其它。对于tomcat6之前版本可以放到common和shared目录下)。

分享到:
评论

相关推荐

    JDBC连接MySQL驱动

    JDBC连接MySQL数据库驱动Class.forName("com.mysql.cj.jdbc.Driver");

    jdbc驱动for MySql

    jdbc驱动for MySql build path add jar...

    JDBC驱动for sqlserver、oracle、mysql

    JDBC驱动 jdbc for sqlserver jdbc for oracle jdbc for mysql Java数据库开发必用驱动

    JDBC for Oracle,sqlServer2000,MySQL

    用来连接Oracle,sqlServer2000,MySQL数据库的驱动(JDBC)(ojdbc6.jar msbase.jar mssqkserver.jar msutil.jar mysql-connector-java)

    mysql jdbc 连接驱动

    MySQL Connector/J is licensed under the GPL or a commercial license from MySQL AB. If you have licensed this product under the GPL, please see the COPYING file for more information. There are ...

    jdbc for mysql 官方最新版 5.1.19

    解压后的第一个文件 放到lib 库 即可使用。 mysql 驱动, jdbc 官方最新版

    5.1.26 mysql-jdbc驱动包

    Hello all, MySQL Connector/J 5.1.26, a maintenance release of the ...JDBC driver for MySQL. Version 5.1.26 is suitable for use with many MySQL server versions, including 4.1, 5.0, 5.1, 5.4, 5.5 and 5.6.

    MySQL 5.7版本以上数据库的连接驱动jar包

    这是MySQL 5.7版本以上数据库的连接驱动jar包,对应加载驱动程序代码: Class.forName("com.mysql.cj.jdbc.Driver"); 该驱动包适用于Java web开发,连接MySQL数据库时导入工程。 参考代码: Class.forName(...

    jdbc mysql dirver.rar

    连接 mysql 数据库的 驱动包 连接 mysql 数据库的 驱动包 连接 mysql 数据库的 驱动包

    MySQL_for_JDBC,Oracle9i_for_JDBC,SQL_2000_for_JDBC,SQL_2005_for_JDBC数据库驱动架包.rar

    MySQL_for_JDBC,Oracle9i_for_JDBC,SQL_2000_for_JDBC,SQL_2005_for_JDBC数据库驱动架包.rar

    JDBC驱动加载分析

    这里采用的是sun提供的jdbc-odbc驱动(Access采用此方式,需要配置数据源,mysql等非jdbc-odbc桥不需要这么麻烦)。代码第一行是加载驱动,加载驱动是把某个驱动提供商提供的相关数据库的驱动类通过该方法加载到内存...

    JDBC 连接方法及驱动MYSQL

    JDBC 连接方法及驱动的使用\MYSQL JDBC\Eclipse JDK1.6 mysql-connector-java-5.1.26驱动连接数据库

    mysql 5.7 57版本以上数据库驱动 jar

    这是MySQL 5.7版本以上数据库的连接驱动jar包(解压密码1234),对应加载驱动程序代码: Class.forName("com.mysql.cj.jdbc.Driver"); 该驱动包适用于Java web开发,连接MySQL数据库时导入工程。 参考代码: Class....

    java_jdbc代码

    Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ System.out.println("找不到驱动程序类 ,加载驱动失败!"); e.printStackTrace() ; } 成功加载后,会将Driver类的实例...

    JSP使用JDBC连接MYSQL数据库的方法

    下载MySQL JDBC驱动程序mysql-connector-java-*.jar,如我下载的是mysql-connector-java-5.1.18-bin.jar并加入到ClassPath下面,或加入到项目中。   2. 注册JDBC驱动程序 try { Class.forName...

    mysql-connector-cj-8.0.32.jar JDBC驱动 解压即用

    mysql-connector-j 是 MySQL 官方提供的一个 JDBC 驱动,用于在 Java 应用程序中连接和操作 MySQL 数据库。它是开源的,使用它可以方便地在 Java 代码中操作 MySQL 数据库。mysql-connector-j 以 jar 包的形式提供,...

    mysql57驱动jar包

    这是MySQL 5.7版本以上数据库的连接驱动jar包,对应加载驱动程序代码: Class.forName("com.mysql.cj.jdbc.Driver"); 该驱动包适用于Java web开发,连接MySQL数据库时导入工程。 参考代码: Class.forName(...

Global site tag (gtag.js) - Google Analytics