即使数据库解锁,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 锁定异常的主要内容,如果未能解决你的问题,请参考以下文章

如何用 Spring 解锁 Liquibase 锁?

该帐户当前被锁定,所以用户sa登录失败。系统管理员无法将该帐户解锁

是否存在 liquibase 锁定超时?

解锁设备,显示文本,然后再次锁定

如何解锁DB2中被锁定的表

db2数据库里面的一张表被锁定,怎么解锁