当前位置: 首页 > 知识库问答 >
问题:

创建数据库后解列锁错误

吕和风
2023-03-14

我目前正在使用Liquibase Java API运行DDL脚本。成功地执行了整个脚本和相应的变更集。然而,在执行之后,Liquibase抛出一个LockException。

错误日志如下,

    21713 [main] DEBUG liquibase.ext.mssql.database.MSSQLDatabase  - Executing Statement: ALTER 
    TABLE [dbo].[VALIDATIONEXECUTORS] CHECK CONSTRAINT [FK_MSTAPPTYPE_VLDTNEXCUTORS]
    21713 [main] INFO liquibase.executor.jvm.JdbcExecutor  - ALTER TABLE [dbo].[VALIDATIONEXECUTORS] 
    CHECK CONSTRAINT [FK_MSTAPPTYPE_VLDTNEXCUTORS]
    21715 [main] DEBUG liquibase.executor.jvm.JdbcExecutor  - 0 row(s) affected
    21715 [main] DEBUG liquibase.ext.mssql.database.MSSQLDatabase  - Executing Statement: COMMIT
    21715 [main] INFO liquibase.executor.jvm.JdbcExecutor  - COMMIT
    21735 [main] DEBUG liquibase.executor.jvm.JdbcExecutor  - -1 row(s) affected
    21735 [main] INFO liquibase.changelog.ChangeSet  - SQL in file 
    E:\\LQBASE\\LiquibaseDemo\\src\\main\\resources\\db\\changelog\\ddl\\DBSchema.sql executed
    21737 [main] INFO liquibase.changelog.ChangeSet  - ChangeSet 
    src/main/resources/db/changelog/ddl_changelog.xml::Create_DB::skini ran successfully in 18064ms
    21738 [main] INFO liquibase.executor.jvm.JdbcExecutor  - select schema_name()
    21739 [main] INFO liquibase.executor.jvm.JdbcExecutor  - SELECT MAX(ORDEREXECUTED) FROM 
    IND_DEV.DATABASECHANGELOG
    21742 [main] INFO liquibase.executor.jvm.JdbcExecutor  - select schema_name()
    21744 [main] DEBUG liquibase.executor.jvm.JdbcExecutor  - Release Database Lock
    21745 [main] INFO liquibase.executor.jvm.JdbcExecutor  - select schema_name()
    21747 [main] DEBUG liquibase.executor.jvm.JdbcExecutor  - UPDATE IND_DEV.DATABASECHANGELOGLOCK 
    SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1
    21749 [main] INFO liquibase.executor.jvm.JdbcExecutor  - select schema_name()
    **21751 [main] INFO liquibase.lockservice.StandardLockService  - Successfully released change log 
    lock
    21752 [main] ERROR liquibase.Liquibase  - Could not release lock
    liquibase.exception.LockException: liquibase.exception.DatabaseException: Error executing SQL 
    UPDATE IND_DEV.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE 
    ID = 1: Invalid object name 'IND_DEV.DATABASECHANGELOGLOCK'.**
    at liquibase.lockservice.StandardLockService.releaseLock(StandardLockService.java:357)
    at liquibase.Liquibase.update(Liquibase.java:206)
    at liquibase.Liquibase.update(Liquibase.java:179)
    at liquibase.Liquibase.update(Liquibase.java:175)
    at liquibase.Liquibase.update(Liquibase.java:168)
    at 
    com.sk.liquibase.LiquibaseDemo.LiquibaseConfig.createManageIDDatabase(LiquibaseConfig.java:34)
    at com.sk.liquibase.LiquibaseDemo.App.main(App.java:12)
    **Caused by: liquibase.exception.DatabaseException: Error executing SQL UPDATE 
    IND_DEV.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1: 
    Invalid object name 'IND_DEV.DATABASECHANGELOGLOCK'.**

根据错误,IND\u DEV(DB用户名)以某种方式被追加到DATABASECHANGELOGLOCK表中。有人知道问题出在哪里吗?

共有1个答案

东方吕恭
2023-03-14

有时,如果更新应用程序突然停止,则锁仍会被卡住。可能是因为一个已终止的液化酶进程没有释放其锁

然后运行

UPDATE DATABASECHANGELOGLOCK SET LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null;

对数据库有帮助。

或者您可以简单地删除DATABASECHANGELOGLOCK表,它将被重新创建。或者您配置的任何changeloglock名称。

 类似资料:
  • 我试图使用MySQL创建一个数据库。我就遇到了这个问题。我怎么才能修好它? 错误1044(42000):拒绝用户“@'localhost”访问数据库“sample_db”

  • 我对根用户、超级用户、用户和权限非常困惑!我无法在用户“athleticu”中创建数据库。以下是我使用的命令:- 请有人澄清我的疑问,告诉我该写什么!

  • 我正在尝试创建一个新的JavaDB。我已经将Java DB驱动程序添加到库中,但在服务下创建新数据库时,它仍然会抛出一个错误。 我下载并定义了db-derby-10.15.2.0-bin 我在这里定义了drover文件 我在这里单击了创建数据库 填了这张表 点击om后显示如下 谁来帮帮我

  • 主要内容:创建非限制性数据库,创建限制性数据库命令用于在实例中创建数据库。所有数据库都是使用默认存储组创建的,该存储组是在创建实例时创建的。 在DB2中,所有数据库表都存储在中,后者使用各自的存储组。 创建非限制性数据库 命令用于创建非限制性数据库。 语法: 示例 假设要创建一个名称为“XYZ”的数据库 安装后,切换到用户才有权创建新数据库。根据安装的版本,可能会更改该用户名。 但DB2默认使用作为管理员用户。 查看目录,将看到一个新用户(最

  • 主要内容:使用Fauxton创建数据库,CouchDB使用cURL工具创建数据库在CouchDB中,数据库是存储文档的最外层结构。 CouchDB提供cURL实用程序来创建数据库。 您也可以使用的CouchDB Web界面。 使用Fauxton创建数据库 在网络浏览器中打开以下链接: 应该会看到类似下面的一个页面: 点击红色圆圈中的“Create Database”选项卡,创建一个名为“”的数据库。 它将显示一条消息,表示数据库已成功创建。可以在概览(Overview)选项卡

  • 在这节中,我们来学习如何在MariaDB中创建一个数据库。 创建一个名称为的数据库。 语法: 示例 或者指定使用默认的字符集来创建数据库: 注意,数据库名称不区分大小写。因此:,以及均表示同一个数据库。 显示数据库 命令用于查看创建的数据库。 语法: 使用MariaDB客户端,执行上面查询语句,得到以下结果 -