2013-08-19 3 views
0

Grails database migration plugin을 사용하고 있습니다.Grails 데이터베이스 마이그레이션은 LiquibaseException과 함께 실패합니다.

| 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 

어떤 아이디어 이유 :

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

가 나는이 예외가 내 응용 프로그램을 시작할 때 :

이 내 구성입니다?

답변

3

문제는 updateOnStartFileNames 속성이 배열이 아닌 문자열을 사용하므로 구성이 차례로 각각의 실행이 목록을 통해

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

플러그인을 반복해야하지만이었다가 이상 반복 할 문자열을 지정하는 경우 각 문자와 그것을 실행합니다. Liquibase는 첫 번째 문자의 접미사를 인식하지 못하기 때문에 예외를 throw합니다.이 경우 'c'입니다.