即使数据库解锁,liquibase 锁定异常
Posted
技术标签:
【中文标题】即使数据库解锁,liquibase 锁定异常【英文标题】:liquibase Lock Exception even when DB unlocked 【发布时间】:2014-10-31 18:40:43 【问题描述】:我的应用程序部署在 tomcat7 上。它连接到后端的 mysql 数据库。 我在“核心”模式中配置了 DATABASECHANGELOG、其 LOCK 和 User 表。 启动tomcat服务器时,我面临以下问题。
INFO 14 年 7 月 9 日上午 11:04:liquibase:成功获取更改日志锁
信息 2014 年 7 月 9 日上午 11:04:liquibase:读取自 partner
.DATABASECHANGELOG
信息 2014 年 7 月 9 日上午 11:04:liquibase:读取自 partner
.DATABASECHANGELOG
警告 14 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
信息 7/9/14 上午 11:04:liquibase:成功释放更改日志锁
信息 7/9/14 上午 11:04:liquibase:成功获取更改日志锁
信息 2014 年 7 月 9 日上午 11:04:liquibase:读取自 core
.DATABASECHANGELOG
信息 2014 年 7 月 9 日上午 11:04:liquibase:读取自 core
.DATABASECHANGELOG
警告 14 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
警告 14 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
警告 14 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
警告 14 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
警告 14 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
警告 2014 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
信息 7/9/14 上午 11:04:liquibase:成功释放更改日志锁
信息 7/9/14 上午 11:04:liquibase:成功获取更改日志锁
信息 2014 年 7 月 9 日上午 11:04:liquibase:读取自 partner
.DATABASECHANGELOG
信息 2014 年 7 月 9 日上午 11:04:liquibase:读取自 partner
.DATABASECHANGELOG
警告 14 年 7 月 9 日上午 11:04:liquibase:modifyDataType 将丢失 mysql 的主键/自动增量/非空设置。如果是这种情况,请使用并重新指定所有配置
信息 7/9/14 上午 11:04:liquibase:成功释放更改日志锁
...
14/09/07 11:04:49 INFO support.GenericXmlApplicationContext:刷新 org.springframework.context.support.GenericXmlApplicationContext@771b9e:启动日期 [Sun Sep 07 11:04:49 IST 2014];上下文层次结构的根
14/09/07 11:04:49 INFO support.PropertySourcesPlaceholderConfigurer:从类路径资源加载属性文件 [jdbc.properties]
14/09/07 11:04:49 INFO support.DefaultListableBeanFactory:在 org.springframework.beans.factory.support.DefaultListableBeanFactory@587dcb 中预实例化单例:定义 bean [org.springframework.context.support.PropertySourcesPlaceholderConfigurer#0,entityManagerFactory ,taxonomy.transaction.manager,taxonomy.datasource,taxonomy.liquibase];工厂层次结构的根
14/09/07 11:04:49 信息 jpa.LocalContainerEntityManagerFactoryBean:为持久性单元“inference.taxonomy”构建 JPA 容器 EntityManagerFactory
14/09/07 11:04:49 信息 ejb.Ejb3Configuration:HHH000204:处理 PersistenceUnitInfo [
名称:inference.taxonomy
...]
14/09/07 11:04:49 INFO internal.ConnectionProviderInitiator:HHH000130:实例化显式连接提供程序:org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
14/09/07 11:04:49 INFO dialect.Dialect:HHH000400:使用方言:org.hibernate.dialect.MySQLDialect
14/09/07 11:04:50 INFO internal.TransactionFactoryInitiator:HHH000268:事务策略:org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
2007 年 14 月 9 日 11:04:50 信息 ast.ASTQueryTranslatorFactory:HHH000397:使用 ASTQueryTranslatorFactory
信息 2014 年 7 月 9 日上午 11:04:liquibase:等待更改日志锁定....
信息 2014 年 7 月 9 日上午 11:05:liquibase:等待更改日志锁定....
信息 2014 年 7 月 9 日上午 11:05:liquibase:等待更改日志锁定....
信息 2014 年 7 月 9 日上午 11:05:liquibase:等待更改日志锁定....
信息 2014 年 7 月 9 日上午 11:05:liquibase:等待更改日志锁定....
信息 2014 年 7 月 9 日上午 11:05:liquibase:等待更改日志锁定....
信息 2014 年 7 月 9 日上午 11:05:liquibase:等待更改日志锁定....
信息 2014 年 7 月 9 日上午 11:06:liquibase:等待更改日志锁定....
....
原因:liquibase.exception.LockException:无法获取更改日志锁。自 2014 年 5 月 9 日晚上 11:23 起,目前已被 10.1.202.X (10.1.202.X) 锁定
在 liquibase.lockservice.LockService.waitForLock(LockService.java:81)
在 liquibase.Liquibase.update(Liquibase.java:102)
在 liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:262)
atliquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:245)
在数据库级别,DataBaseChangeLogLock 表已锁定字段解锁,如下所示
ID , Locked, LockGranted, LockedBy
'1'、'0'、NULL、NULL
即使我为什么在启动服务器之前删除所有与 DATABASECHANGELOG 相关的表,我也面临同样的问题。
我没有找到任何解决这个问题的方法 Liquibase lock - reasons?
【问题讨论】:
我认为您的应用程序在启动后会打开与数据库的连接,或者您可能忘记关闭任何由它打开的 JDBC 连接。所以 Liquibase 实际上无法获取锁,因为它是由您的网络应用程序获取的。 【参考方案1】:已解决。我正在查看的 DATABASECHANGELOG 表位于另一个模式“core.DATABASECHANGELOG”中,而获取的锁位于“platform.DATABASECHANGELOG”中。
一旦我更新了正确的日志表,它就被解决了。
【讨论】:
以上是关于即使数据库解锁,liquibase 锁定异常的主要内容,如果未能解决你的问题,请参考以下文章