Grails 中的 Liquibase:“空结果集,预期为一行”
Posted
技术标签:
【中文标题】Grails 中的 Liquibase:“空结果集,预期为一行”【英文标题】:Liquibase in Grails: “Empty result set, expected one row” 【发布时间】:2012-11-09 04:12:43 【问题描述】:我对 Grails 域类进行了更改并运行
grails db-gorm-diff 2012-11-20-domain-class-change.groovy --add
(显然那里有另一个名字)
并且从 Liquibase 收到“更改锁定”错误:
Error executing bootstraps: liquibase.exception.LockException: Could not acquire change log lock. Currently locked by computer-name.local […]
所以(看起来很愚蠢)按照an aged thread dealing with a similar problem with the Autobase plugin 中的建议,我删除了更改日志锁定表中的行:
mysql> delete from DATABASECHANGELOGLOCK;
现在得到这个漂亮的 Liquibase 错误:
Error executing bootstraps: liquibase.exception.DatabaseException: Empty result set, expected one row
这清楚地告诉我,改变这一点为时已晚,我不应该从表中删除该行。
我现在该怎么办?
【问题讨论】:
【参考方案1】:我在一般 Liquibase 相关的地方挖掘了更多内容,现在了解到我可以简单地 drop the table altogether 并在启动时重新创建它。这似乎奏效了。
【讨论】:
【参考方案2】:插件中有一个脚本 - 使用http://grails-plugins.github.com/grails-database-migration/docs/manual/ref/Maintenance%20Scripts/dbm-release-locks.html
【讨论】:
【参考方案3】:看看http://forum.liquibase.org/topic/message-regarding-an-empty-result-set-for-databasechangeloglock 。您只需将 'locked' 行设置为 1 或完全删除 databasechangelock 表(然后将重新创建)
【讨论】:
以上是关于Grails 中的 Liquibase:“空结果集,预期为一行”的主要内容,如果未能解决你的问题,请参考以下文章