遇上MySql的奇怪问题

今天遇上一个异常:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2013-04-08 15:35:47 072 [ERROR] JDBC commit failed [org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:124)]
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during commit(). Transaction resolution unknown.
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
  at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
  at com.mysql.jdbc.Util.getInstance(Util.java:382)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
  at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1672)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:616)
  at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:162)
  at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
  at $java.sql.Connection$$EnhancerByProxool$$90ddbb0c.commit(<generated>)
  at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:139)
  at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:115)
  at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:596)
  at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709)
  at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)
  at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:319)
  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
  at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
  at $Proxy163.importDate(Unknown Source)

找了一个上午和半个下午终于解决了,原因是线上的数据库服务器关掉了innodb引擎,myisam对事务支持有问题,所以修改spring的配置文件,把事务的配置去掉就可以了。