12

Liquibase を使用して DB にいくつかのテーブルを作成しようとしています。

背景: ローカルの h2 データベースで同じ changelog.xml ファイルを実行したところ、正常に動作しました。そして、以下のOracleデータベース、ユーザー名、パスワード、およびドライバーをsquirrelでテストしたところ、正常に接続されました。したがって、私はリキベースの問題に直面していると確信しています。私は大規模なグーグル検索を行いましたが、SOや他の場所で私を助けることができるものは何も見つかりませんでした.

コマンドプロンプトに次のように入力しました。

C:\>java -jar liquibase-core-2.0.5.jar --driver=oracle.jdbc.OracleDriver
--classpath=ojdbc6-11.2.0.3.0.jar --changeLogFile=changelog.xml 
--url="jdbc:oracle:thin:@myDatabase"
--username=myUsername --password=myPassword --logLevel=debug update

返されたもの:

DEBUG 9/30/13 3:09 PM:liquibase: Unable to load/access Apache Derby driver class
to check version
DEBUG 9/30/13 3:09 PM:liquibase: Connected to myUsername@jdbc:oracle:thin:@myDatabase
DEBUG 9/30/13 3:10 PM:liquibase: Executing QUERY database command: SELECT LOCKED
FROM DATABASECHANGELOGLOCK WHERE ID=1 FOR UPDATE
Liquibase Update Failed: Empty result set, expected one row
SEVERE 9/30/13 3:10 PM:liquibase: Empty result set, expected one row
liquibase.exception.LockException: liquibase.exception.DatabaseException: Empty
result set, expected one row
    at liquibase.lockservice.LockService.acquireLock(LockService.java:121)
    at liquibase.lockservice.LockService.waitForLock(LockService.java:61)
    at liquibase.Liquibase.update(Liquibase.java:102)
    at liquibase.integration.commandline.Main.doMigration(Main.java:825)
    at liquibase.integration.commandline.Main.main(Main.java:134)
Caused by: liquibase.exception.DatabaseException: Empty result set, expected one
row
    at liquibase.util.JdbcUtils.requiredSingleResult(JdbcUtils.java:124)
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:
159)
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:
167)
    at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:
163)
    at liquibase.lockservice.LockService.acquireLock(LockService.java:96)
    ... 4 more
4

4 に答える 4

14

ここで答えを見つけました: https://forum.liquibase.org/t/message-regarding-an-empty-result-set-for-databasechangeloglock/1487/2

databasechangeloglock テーブルを削除すると解決しました。

于 2013-10-01T17:21:58.950 に答える
8

DATABASECHANGELOGLOCKが空の場合、エラーは常に表示されます。(このテーブルのレコードを誤って削除した後、この問題が発生しました)。

私が見つけた解決策は簡単でした:

ID=1、LOCKED=0、LOCKGRANTED=null、LOCKEDBY=nullのダミー行を挿入するだけです。

それでおしまい!

于 2014-11-11T16:50:27.870 に答える
4

postgresql 10.4 を使用して liquibase を使用しようとすると、同じコア例外の問題が発生しました。

Caused by: liquibase.exception.DatabaseException: Expected single row from 
liquibase.statement.core.GetViewDefinitionStatement@1de5f25 but got 0`

私たちにとっては、jdbc ドライバーの問題だったようです。

私たちにとっての解決策は、jdbc ドライバーを 9.3-1102-jdbc41 から 9.4-1202-jdbc41 にアップグレードすることでした。

于 2018-07-24T14:35:39.243 に答える