Mysql 使用tomcat cluster同时运行两个flyway迁移时,其中一个服务器上的迁移失败

Mysql 使用tomcat cluster同时运行两个flyway迁移时,其中一个服务器上的迁移失败,mysql,flyway,Mysql,Flyway,我试图用两个tomcat在集群中运行我的应用程序,当同时启动两个tomcat时,在一个tomcat上的迁移失败。我的spring配置是- <bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate"> <property name="dataSource" ref="dataSource"/> <property name="initOnMigrate" value

我试图用两个tomcat在集群中运行我的应用程序,当同时启动两个tomcat时,在一个tomcat上的迁移失败。我的spring配置是-

<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
<property name="dataSource" ref="dataSource"/>
<property name="initOnMigrate" value="true" />
</bean>
我还将innodb_lock_wait_timeout增加到900,mysql版本为5.6.15

请帮我做这个,日志是-

org.springframework.beans.factory.BeanCreationException:创建名为“flyway”的bean时出错,该bean在类路径资源[spring/db.xml]中定义:调用init方法失败;嵌套异常为com.googlecode.flyway.core.api.FlywayException:无法在元数据表connect\u dev.schema\u version中插入版本“1”的行 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBeanAbstractAutowireCapableBeanFactory.java:1554 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBeanAbstractAutowireCapableBeanFactory.java:539 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanAbstractAutowireCapableBeanFactory.java:475 位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjectAbstractBeanFactory.java:302 位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingletonDefaultSingletonBeanRegistry.java:228 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBeanAbstractBeanFactory.java:298 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBeanAbstractBeanFactory.java:193 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBeanAbstractBeanFactory.java:292 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBeanAbstractBeanFactory.java:193 位于org.springframework.context.support.AbstractApplicationContext.getBeanAbstractApplicationContext.java:975 位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitializationAbstractApplicationContext.java:752 位于org.springframework.context.support.AbstractApplicationContext.refreshAbstractApplicationContext.java:482 位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContextContextLoader.java:403 位于org.springframework.web.context.ContextLoader.initWebApplicationContextContextLoader.java:306 位于org.springframework.web.context.ContextLoaderListener.contextInitializedContextLoaderListener.java:106 位于org.apache.catalina.core.StandardContext.listenerStartStandardContext.java:4937 位于org.apache.catalina.core.StandardContext.startInternalStandardContext.java:5434 位于org.apache.catalina.util.LifecycleBase.startIFecyclebase.java:150 位于org.apache.catalina.core.ContainerBase.addChildInternalContainerBase.java:901 位于org.apache.catalina.core.ContainerBase.addChildContainerBase.java:877 位于org.apache.catalina.core.StandardHost.addChildStandardHost.java:633 位于org.apache.catalina.startup.HostConfig.deployDirectoryHostConfig.java:1120 位于org.apache.catalina.startup.HostConfig$DeployDirectory.runHostConfig.java:1678 位于java.util.concurrent.Executors$RunnableAdapter.callExecutors.java:511 位于java.util.concurrent.FutureTask.runFutureTask.java:266 位于java.util.concurrent.ThreadPoolExecutor.runWorkerThreadPoolExecutor.java:1142 位于java.util.concurrent.ThreadPoolExecutor$Worker.runThreadPoolExecutor.java:617 java:745 原因:com.googlecode.flyway.core.api.FlywayException:无法在元数据表connect\u dev.schema\u version中插入版本“1”的行 位于com.googlecode.flyway.core.metadatatable.MetaDataTableImpl.addAppliedMigrationMetaDataTableImpl.java:158 位于com.googlecode.flyway.core.metadatatable.MetaDataTableImpl.addInitMarkerMetaDataTableImpl.java:280 位于com.googlecode.flyway.core.command.DbInit$1.doInTransactionDbInit.java:95 位于com.googlecode.flyway.core.command.DbInit$1.doInTransactionDbInit.java:74 位于com.googlecode.flyway.core.util.jdbc.TransactionTemplate.executeTransactionTemplate.java:72 位于com.googlecode.flyway.core.command.DbInit.initDbInit.java:74 位于com.googlecode.flyway.core.flyway$1.executeFlyway.java:841 位于com.googlecode.flyway.core.flyway$1.executeFlyway.java:819 位于com.googlecode.flyway.core.flyway.executeFlyway.java:1200 位于com.googlecode.flyway.core.flyway.migrateFlyway.java:819 在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法中 位于sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:62 在sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43 位于java.lang.reflect.Method.invokeMethod.java:483 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InvokeCustomitMethodAbstractAutoWireCapableBeanFactory.java:1682 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.i NvokeInitMethodsStractAutoWireAbleBeanFactory.java:1621 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBeanAbstractAutowireCapableBeanFactory.java:1550 ... 还有27个 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException:尝试获取锁时发现死锁;尝试重新启动事务 在sun.reflect.NativeConstructorAccessorImpl.newInstance0Native方法中 位于sun.reflect.NativeConstructorAccessorImpl.newInstanceNativeConstructorAccessorImpl.java:62 在sun.reflect.DelegatingConstructorAccessorImpl.newInstanceDelegatingConstructorAccessorImpl.java:45 位于java.lang.reflect.Constructor.newInstanceConstructor.java:408 位于com.mysql.jdbc.Util.handleNewInstanceUtil.java:406 位于com.mysql.jdbc.Util.getInstanceUtil.java:381 位于com.mysql.jdbc.SQLError.createSQLExceptionSQLError.java:1045 位于com.mysql.jdbc.SQLError.createSQLExceptionSQLError.java:956 在com.mysql.jdbc.MysqlIO.checkErrorPacketMysqlIO.java:3491 在com.mysql.jdbc.MysqlIO.checkErrorPacketMysqlIO.java:3423 在com.mysql.jdbc.MysqlIO.sendCommandMysqlIO.java:1936 位于com.mysql.jdbc.MysqlIO.sqlQueryDirectMysqlIO.java:2060 位于com.mysql.jdbc.ConnectionImpl.execSQLConnectionImpl.java:2542 位于com.mysql.jdbc.PreparedStatement.executeInternalPreparedStatement.java:1734 位于com.mysql.jdbc.PreparedStatement.executeUpdatePreparedStatement.java:2019 位于com.mysql.jdbc.PreparedStatement.executeUpdatePreparedStatement.java:1937
在com.mysql.jdbc.PreparedStatement.executeUpdatePreparedStatement.java:1922

在Spring数据源中配置maxWait值,看看这是否改变了情况。

请升级到Flyway 3.0并重试。如果问题仍然存在,请使用两个节点的调试日志在GitHub上提交问题。