对于低版本(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数据库驱动Class.forName("com.mysql.cj.jdbc.Driver");
jdbc驱动for MySql build path add jar...
JDBC驱动 jdbc for sqlserver jdbc for oracle jdbc for mysql Java数据库开发必用驱动
用来连接Oracle,sqlServer2000,MySQL数据库的驱动(JDBC)(ojdbc6.jar msbase.jar mssqkserver.jar msutil.jar mysql-connector-java)
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 ...
解压后的第一个文件 放到lib 库 即可使用。 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包,对应加载驱动程序代码: Class.forName("com.mysql.cj.jdbc.Driver"); 该驱动包适用于Java web开发,连接MySQL数据库时导入工程。 参考代码: Class.forName(...
连接 mysql 数据库的 驱动包 连接 mysql 数据库的 驱动包 连接 mysql 数据库的 驱动包
MySQL_for_JDBC,Oracle9i_for_JDBC,SQL_2000_for_JDBC,SQL_2005_for_JDBC数据库驱动架包.rar
这里采用的是sun提供的jdbc-odbc驱动(Access采用此方式,需要配置数据源,mysql等非jdbc-odbc桥不需要这么麻烦)。代码第一行是加载驱动,加载驱动是把某个驱动提供商提供的相关数据库的驱动类通过该方法加载到内存...
JDBC 连接方法及驱动的使用\MYSQL JDBC\Eclipse JDK1.6 mysql-connector-java-5.1.26驱动连接数据库
这是MySQL 5.7版本以上数据库的连接驱动jar包(解压密码1234),对应加载驱动程序代码: Class.forName("com.mysql.cj.jdbc.Driver"); 该驱动包适用于Java web开发,连接MySQL数据库时导入工程。 参考代码: Class....
Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ System.out.println("找不到驱动程序类 ,加载驱动失败!"); e.printStackTrace() ; } 成功加载后,会将Driver类的实例...
下载MySQL JDBC驱动程序mysql-connector-java-*.jar,如我下载的是mysql-connector-java-5.1.18-bin.jar并加入到ClassPath下面,或加入到项目中。 2. 注册JDBC驱动程序 try { Class.forName...
mysql-connector-j 是 MySQL 官方提供的一个 JDBC 驱动,用于在 Java 应用程序中连接和操作 MySQL 数据库。它是开源的,使用它可以方便地在 Java 代码中操作 MySQL 数据库。mysql-connector-j 以 jar 包的形式提供,...
这是MySQL 5.7版本以上数据库的连接驱动jar包,对应加载驱动程序代码: Class.forName("com.mysql.cj.jdbc.Driver"); 该驱动包适用于Java web开发,连接MySQL数据库时导入工程。 参考代码: Class.forName(...