0

Grailsデータベース移行プラグインを使用しています。

これは私の構成です:

grails.plugin.databasemigration.updateOnStart = true
grails.plugin.databasemigration.updateOnStartFileNames = 'changelog.groovy'

アプリを起動すると、次の例外が発生します。

| Error 2013-08-20 08:55:47,356 [localhost-startStop-1] ERROR context.GrailsContextLoader  - Error initializing the application: liquibase.exception.LiquibaseException: Cannot find parser that supports c
Message: liquibase.exception.LiquibaseException: Cannot find parser that supports c
    Line | Method
->>  334 | innerRun  in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    166 | run       in java.util.concurrent.FutureTask
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    724 | run . . . in java.lang.Thread

Caused by LiquibaseException: Cannot find parser that supports c
->>   61 | getParser in liquibase.parser.ChangeLogParserFactory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    623 | listUnrunChangeSets in liquibase.Liquibase
|     67 | doCall .  in grails.plugin.databasemigration.MigrationRunner$_autoRun_closure1
|    132 | executeInSession in grails.plugin.databasemigration.MigrationUtils
|     56 | autoRun . in grails.plugin.databasemigration.MigrationRunner
|     96 | doCall    in DatabaseMigrationGrailsPlugin$_closure2
|    334 | innerRun  in java.util.concurrent.FutureTask$Sync
|    166 | run       in java.util.concurrent.FutureTask
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    724 | run . . . in java.lang.Thread

理由はありますか?

4

1 に答える 1

3

問題は、updateOnStartFileNamesプロパティが文字列ではなく配列を取るため、構成は

grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.groovy']

プラグインはこのリストを順番に実行しますが、String が与えられると、各文字を反復して実行します。Liquibase は、最初の文字 (この場合は 'c') のサフィックスを認識しないため、例外をスローします。

于 2013-08-19T21:08:57.487 に答える