grails / grails-database-migration Goto Github PK
View Code? Open in Web Editor NEWGrails® framework Database Migration Plugin
License: Apache License 2.0
Grails® framework Database Migration Plugin
License: Apache License 2.0
The monolithic grails project has been broken up into several smaller projects. Visit http://github.com/grails.
I seem to have a regression from the grails 2 plugin. It used to be the migration scripts would be in WEB-INF/classes/migrations. Now they are all just dumped in the WEB-INF/classes dir which complicats things for me.
hi,
we have a grails3 app with local plugins (domain classes included). Is there any working example for it?
for example dbm-gorm-diff isn't working. Grails want to call dbm-gorm-diff inside the plugin directory. There it crashes with: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration
if we insert hibernate as dependency, we got :
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistenceInterceptor': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.grails.orm.hibernate4.support.AggregatePersistenceContextInterceptor.setHibernateDatastores(org.grails.orm.hibernate.AbstractHibernateDatastore[]); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.grails.orm.hibernate.AbstractHibernateDatastore] found for dependency [array of org.grails.orm.hibernate.AbstractHibernateDatastore]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
how can we solve it?
thx.
I have an existing app in which I used to use previous version of this plugin.
I needed to upgrade together with grails upgrade and I started to have bunch of problems, so I decided to start migration history from scratch. However, before I started dealing with it, I already made some changes to existing domain classes and added one new.
My plan was to generate a changelog based on my current prod DB and then generate a diff for the changes I made. Sounds simple and straightforward; however, it didn't work out as expected. Here is what I did:
grails dbm-generate-changelog changelog-init.xml --add
What am I doing wrong here?
I have a Domain class Example:
class Example {
String thisIsText
String thisIsAString
static constraints = {
}
static mapping = {
thisIsText type: 'text'
}
}
and create the initial migration. That results in:
databaseChangeLog = {
changeSet(author: "alexanderfranke (generated)", id: "1465390511706-1") {
createTable(tableName: "example") {
column(autoIncrement: "true", name: "id", type: "BIGINT") {
constraints(primaryKey: "true", primaryKeyName: "examplePK")
}
column(name: "version", type: "BIGINT") {
constraints(nullable: "false")
}
column(name: "this_isastring", type: "VARCHAR(255)") {
constraints(nullable: "false")
}
column(name: "this_is_text", type: "CLOB") {
constraints(nullable: "false")
}
}
}
}
I now change the class by adding a further member variable and adding a further line to the mapping resulting in the following:
class Example {
String thisIsText
String thisIsAString
Integer aNumber
static constraints = {
}
static mapping = {
thisIsText type: 'text'
thisIsAString type: 'text'
}
}
Creating a migration now will completely ignore thisIsAString
:
databaseChangeLog = {
changeSet(author: "alexanderfranke (generated)", id: "1465390799555-1") {
addColumn(tableName: "example") {
column(name: "a_number", type: "integer") {
constraints(nullable: "false")
}
}
}
}
Is that the expected behavior? I would have expected that it will alter the column from VARCHAR(255) to CLOB. After some further testing it also seems, that no migration is created when I change the type of thisIsAString
to Integer.
The behavior was observed with POSTGRESQL as well as H2.
You can find the example at https://github.com/alexanderfranke/migrationTest
Thanks,
Alex
When i run > grails development dbm-generate-gorm-changelog base.groovy
It gives error
| Error Command not found development
Did you mean: open or dependency-report or dbm-generate-changelog?
There is not method anymore that accepts only connection as you see:
Caused by: java.lang.NoSuchMethodError: liquibase.integration.spring.SpringLiquibase.createDatabase(Ljava/sql/Connection;)Lliquibase/database/Database;
at org.grails.plugins.databasemigration.liquibase.GrailsLiquibase.createDatabase(GrailsLiquibase.groovy:62) ~[database-migration-2.0.0.RC1.jar:na]
at org.grails.plugins.databasemigration.liquibase.GrailsLiquibase.createLiquibase(GrailsLiquibase.groovy:45) ~[database-migration-2.0.0.RC1.jar:na]
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:389) ~[liquibase-core-3.4.2.jar:na]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
... 21 common frames omitted
When there a table creation written by the plugin createTable/column
:
java.lang.Integer = type: "INT"
org.joda.time.LocalDateTime = type: "timestamp" (my dialect is not taken into account, it should be timestamptz)
When there is a column added written by the plugin addColumn
:
java.lang.Integer = type: "int4"
org.joda.time.LocalDateTime = type: "timestamptz"
The schema is not consistent.
The plugin is not compatible with Hibernate 5. There is an error thrown :
:dbmGenerateGormChangelogCommand execution error: org.hibernate.cfg.Configuration.getTableMappings()Ljava/util/Iterator;
this is only für version 1 : http://grails-plugins.github.io/grails-database-migration/1.4.0/
I have worked on a handful of projects using this plugin. I would like this plugin to have tests, that can verify behaviour, especially when dependencies should be updated.
Some grails developers tend to be reluctant to update dependencies, probably because they burnt their fingers previously.
By having tests, it will be easy to spot which dependencies will break.
And having continuous integration set up to build will be awesome. Grails has a Travis build. This plugin could have that too.
Who wants to help writing tests for this plugin?
I'm using clustered quartz in an app and every time I use dbm-gorm-diff
, it wants to drop the quartz tables. This is definitely because there are no domain classes for the quartz tables.
example:
dropTable(tableName: "QRTZ_BLOB_TRIGGERS")
dropTable(tableName: "QRTZ_CALENDARS")
dropTable(tableName: "QRTZ_CRON_TRIGGERS")
dropTable(tableName: "QRTZ_FIRED_TRIGGERS")
dropTable(tableName: "QRTZ_JOB_DETAILS")
dropTable(tableName: "QRTZ_LOCKS")
dropTable(tableName: "QRTZ_PAUSED_TRIGGER_GRPS")
dropTable(tableName: "QRTZ_SCHEDULER_STATE")
dropTable(tableName: "QRTZ_SIMPLE_TRIGGERS")
dropTable(tableName: "QRTZ_SIMPROP_TRIGGERS")
Perhaps there could be a way to ignore tables?
I'm on Windows 7 Pro, Cygwin, SDK Man, Grails 3.0.9.
I'm able to use migration scripts using dbm-generate-changelog and dbm-generate-gorm-changelog.
My application.yml:
dataSource:
pooled: true
jmxExport: true
driverClassName: org.h2.Driver
username: sa
password:
environments:
development:
dataSource:
dbCreate: none
url: jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
However, when I attempt dbm-update, I get the following error:
$ grails dbm-update --stacktrace
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:dbmUpdate
Configuring Spring Security Core ...
... finished configuring Spring Security Core
Command execution error: java.lang.IllegalArgumentException: Script text to compile cannot be null!
:dbmUpdate FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':dbmUpdate'.
Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 1
Try:
Run with --info or --debug option to get more log output.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':dbmUpdate'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:306)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:43)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:30)
at org.gradle.tooling.internal.provider.ConfiguringBuildAction.run(ConfiguringBuildAction.java:119)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:48)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:71)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:365)
at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)
at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:60)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 57 more
BUILD FAILED
Total time: 33.012 secs
Error |
Error occurred running Grails CLI: Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 1 (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:365)
at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)
at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:60)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:306)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:43)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:30)
at org.gradle.tooling.internal.provider.ConfiguringBuildAction.run(ConfiguringBuildAction.java:119)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:48)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:71)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
Error |
Error occurred running Grails CLI: Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 1
I have a domain object with some properties setting with contraints nullable: true
class Foo {
String name
String email
User user
static constraints = {
name blank: false
email email: true, blank: false
user nullable: true
}
}
And when I run the script
grails dbm-gorm-diff
the plugins generate a table with the property user not nullable
changeSet(author: "orko (generated)", id: "1448879616223-1") {
createTable(tableName: "foo") {
column(autoIncrement: "true", name: "id", type: "BIGINT") {
constraints(primaryKey: "true", primaryKeyName: "fooPK")
}
column(name: "version", type: "BIGINT") {
constraints(nullable: "false")
}
column(name: "email", type: "VARCHAR(255)") {
constraints(nullable: "false")
}
column(name: "name", type: "VARCHAR(255)") {
constraints(nullable: "false")
}
column(name: "user_id", type: "BIGINT") {
constraints(nullable: "false")
}
}
}
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| version | bigint(20) | NO | | NULL | |
| email | varchar(255) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
| user_id | bigint(20) | NO | UNI | NULL | |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
I'm using grails 3.0.9, org.grails.plugins:hibernate:4.3.10.7 and org.grails.plugins:database-migration:2.0.0.RC1.
I think that is a bugs, because in previuos version of the plugin this feature works well
When I define indexes in domain mappings, dbm-gorm-diff does not create the migrations.
Environment:
Example:
class ApiAccessToken {
String id
String apiToken
String deviceId
static constraints = {
apiToken unique:['deviceId']
}
static mapping = {
cache true
apiToken index: 'apitoken_Idx'
deviceId index: 'apitoken_Idx'
}
}
For the added apitoken_Idx index, dbm-gorm-diff states:
databaseChangeLog = {
}
Therefore I created the index migrations manually and applied them:
databaseChangeLog = {
// Note: Added this migration manually, as dbm currently does not create them in Grails 3
createIndex(indexName: "apitoken_Idx", tableName: "api_access_token_eo") {
column(name: "api_token_da")
column(name: "device_id_da")
}
}
BUT: As soon as I run the next dbm-gorm-diff, the plugin creates a migration which drop the indexes created by my manual migration and immediately recreates them:
databaseChangeLog = {
changeSet(author: "roos (generated)", id: "1464877658372-1") {
dropIndex(indexName: "apitoken_Idx", tableName: "api_access_token_eo")
createIndex(indexName: "apitoken_Idx", tableName: "api_access_token_eo") {
column(name: "api_token_da")
column(name: "device_id_da")
}
}
When I drop the index in the db and re-run dbm-gorm-diff, it again states: no changes.
http://grails-plugins.github.io/grails-database-migration/2.0.0.RC4/guide/configuration.html
states wrongly on several places:
grails.plugin.databasemigration.changelogFileName
Correct:
grails.plugin.databasemigration.updateOnStartFileName
"changelogFileName" is gone.
I am running dbm-gorm-diff and get a NullPointerException every time I add a property to a domain class with unique: true.
I have tried to exclude the column, but that doesn't appear to be working either.
I am using org.grails.plugins:database-migration:2.0.0.RC4
`Command execution error: liquibase.command.CommandExecutionException: java.lang.NullPointerException
:dbmGormDiff FAILED
`
We just updated our application from grails 2.5 to 3.1. We also use and upgraded the Grails Database Migration Plugin to version 2.0.0.RC4. We got everything working so far. But now we wanted to use Java 8 instead of Java 7 and this leads to an unexpected behavior within grailschanges, we can't run them anymore if they access domain objects. The following error appears: Either class [] is not a domain class or GORM has not been initialized correctly or has already been shutdown. If we use Java 7 again everything runs fine. We just switched the java version, we didn't change the code.
As an example:
changeSet(author: "bwo", id: "1453106072000-2") { grailsChange { change { Book.withNewSession{ new Book(title: "test").save() } } } }
This change set runs with grails 3.1.8, Data Base Migration version 2.0.0.RC4 and Java 7 but not with Java 8
In Issue #38 someone stated that GORM seems not to be supported anymore, but I could'nt find a statement from the developers. So is this true and we have to rewrite our changes to use plain sql or is this just a failure within the plugin?
I need to set context in command with gradle like this:
gradle dbmUpdate --contexts=mycontext
And get an error that there's no such option
Tried with -P option
gradle dbmUpdate -Pcontexts=mycontext
and it worked but changes were made for all contexts, not only for "mycontext"
Hi, I find the dbm-db-doc
is not working with grailsChange which has sql inside:
grailsChange {
change {
sql.execute("insert x into y")
}
}
If you run the dbm-db-doc
you will see the sql gets triggered. This generally will throw an exception which fail the dbm-db-doc
.
grails 2.5.4
compile "org.grails.plugins:spring-security-core:2.0.0"
runtime ":database-migration:1.4.1"
compile ":postgresql-extensions:4.6.1"
postgres 9.4
ubuntu 14.04
java 8.77
Given the default User and UserRole created by spring security quickstart.
Given the inital user_role table generated by dbm-gorm-diff is:
CREATE TABLE user_role
(
user_id bigint NOT NULL,
role_id bigint NOT NULL,
date_created timestamp with time zone NOT NULL,
last_updated timestamp with time zone NOT NULL,
CONSTRAINT "user_rolePK" PRIMARY KEY (user_id, role_id),
CONSTRAINT "FK_apcc8lxk2xnug8377fatvbn04" FOREIGN KEY (user_id)
REFERENCES users (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "FK_it77eq964jhfqtu54081ebtio" FOREIGN KEY (role_id)
REFERENCES role (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE user_role
OWNER TO postgres;
I want UserRole to be deleted by cascade when user is deleted.
to UserRole.groovy, I added:
static belongsTo = [user: User]
to User.groovy, I added hasMany and an explicit cascade.
static hasMany = [userRoles:UserRole]
static mapping = {
table 'users'
password column: '`password`'
userRoles cascade: 'delete'
}
When I run dbm-gorm-diff after making those changes to the domain classes, I would like a way for the tool to optionally provide a migration to add the cascade to the foreign key constraint.
Project to reproduce : https://github.com/bassmartin/grails-database-migration-tablePerHierarchy-issue
Checkout the project and execute a dbm-gorm-diff
it will fail with a NPE.
The project has one Parent domain class and one Child domain class only.
I'm working on a grails project that is upgrading from grails 2.x to 3. It's failing with migrations that have the comment section like this:
changeSet(author: "j4y", id: "1357154800847-1") {
comment("Adding partner record because...")
sql("INSERT INTO partner(...)")
}
error running 2.0.0RC4 with grails 3.0.17:
INFO 10/7/16 1:58 PM: liquibase: Successfully released change log lock
WARN org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springLiquibase_dataSource': Invocation of init method failed; nested exception is liquibase.exception.ChangeLogParseException: liquibase.exception.SetupException: org.grails.plugins.databasemigration.DatabaseMigrationException: Unknown method name: comment
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1572) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:759) ~[spring-context-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) ~[spring-context-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:117) [spring-boot-1.2.7.RELEASE.jar:1.2.7.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:689) [spring-boot-1.2.7.RELEASE.jar:1.2.7.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) [spring-boot-1.2.7.RELEASE.jar:1.2.7.RELEASE]
at grails.boot.GrailsApp.run(GrailsApp.groovy:55) [grails-core-3.0.17.jar:3.0.17]
at grails.boot.GrailsApp.run(GrailsApp.groovy:374) [grails-core-3.0.17.jar:3.0.17]
at grails.boot.GrailsApp.run(GrailsApp.groovy:363) [grails-core-3.0.17.jar:3.0.17]
at grails.boot.GrailsApp$run.call(Unknown Source) [grails-core-3.0.17.jar:3.0.17]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133) [groovy-2.4.5.jar:2.4.5]
at affdex.portal.Application.main(Application.groovy:8) [main/:na]
Caused by: liquibase.exception.ChangeLogParseException: liquibase.exception.SetupException: org.grails.plugins.databasemigration.DatabaseMigrationException: Unknown method name: comment
at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:27) ~[liquibase-core-3.4.2.jar:na]
at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:227) ~[liquibase-core-3.4.2.jar:na]
at liquibase.Liquibase.update(Liquibase.java:202) ~[liquibase-core-3.4.2.jar:na]
at liquibase.Liquibase.update(Liquibase.java:192) ~[liquibase-core-3.4.2.jar:na]
at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:434) ~[liquibase-core-3.4.2.jar:na]
at org.grails.plugins.databasemigration.liquibase.GrailsLiquibase.performUpdate(GrailsLiquibase.groovy:80) ~[database-migration-2.0.0.RC4.jar:na]
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:391) ~[liquibase-core-3.4.2.jar:na]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1631) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568) ~[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
... 20 common frames omitted
Caused by: liquibase.exception.SetupException: org.grails.plugins.databasemigration.DatabaseMigrationException: Unknown method name: comment
If I remove all of the comment()
lines from the 1.x migrations it works as expected. I thought modifying previous migrations was a no-no, but it looks like it doesn't complain. The 1.x version used to raise a checksum error.
PR follows
Hello! I'm just starting with the dbm plugin and ran into an issue with PostgreSQL timestamp columns. It looks like the plugin version 1.4.1 is using Liquibase 2.0.5 and the issue (see liquibase jira CORE-877 and CORE-1906) was supposedly fixed in Liquibase 3.2.0. Is it possible to somehow (easily) switch to a newer liquibase version with dbm 1.4.1? Or only with dbm 2.0.0 (if that's the case, will 2.0.0 support Grails 2.5.x or only Grails 3)? Thanks for any guidance in advance!
Since 2.0.0 release, plugin.version doesn't seem to be exposed from pluginManager:
dataSource - 3.0.10
databaseMigration - unspecified
i18n - 3.0.10
When the application is deployed with the dependencies JAR files in the /lib folder in Tomcat 7 it can't find the changelog.xml file.
dbm-gorm-diff creates repeatedly changesets for default values of boolean variables regardless of whether that change was already executed.
Example Domain:
package minimal_liquibase
class ExampleDomain {
Boolean exampleBoolean
static constraints = {
exampleBoolean nullable: false
}
static mapping = {
exampleBoolean defaultValue: true, index:'test_idx'
}
}
With only that I executed dbm-generate-gorm-changelog changelog.groovy
with the following result:
databaseChangeLog = {
changeSet(author: "marko (generated)", id: "1461858302502-1") {
createTable(tableName: "example_domain") {
column(autoIncrement: "true", name: "id", type: "BIGINT") {
constraints(primaryKey: "true", primaryKeyName: "example_domainPK")
}
column(name: "version", type: "BIGINT") {
constraints(nullable: "false")
}
column(defaultValueBoolean: "true", name: "example_boolean", type: "BOOLEAN") {
constraints(nullable: "false")
}
}
}
}
To apply that ChangeLog I started the app once run-app
and then created a diff with dbm-gorm-diff diff.groovy
. The diff includes the defaultValueBoolean again:
databaseChangeLog = {
changeSet(author: "marko (generated)", id: "1461858372439-1") {
addDefaultValue(columnDataType: "boolean", columnName: "example_boolean", defaultValueBoolean: "true", tableName: "example_domain")
}
}
The default value for the column is set correctly in the database, though.
Also, it is interesting that no Index is created, neither in the original changelog nor in the diff-changelog.
I used:
I also attached the example grails project as a zip file. Obviously you have to adjust the dataSource settings in the application.yml but besides that u should be able to run it directly.
After running prod-dbm-update on my Grails 3.1.4 application with 2.0.0.RC1 version of the plugin, I started getting this error when deploying WAR to AWS:
`Caused by: org.hibernate.cache.CacheException: net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
I've seen other people running into this issue with Grails 2.5.0, their solution being switching the default echache factory to: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory ( http://peedeebeesblog.blogspot.com.ee/2015/06/moving-up-grails-243-to-250.html ). After doing this change, I started getting this error:
java.lang.IllegalStateException: Cannot find changelog location: class path resource [db/changelog/db.changelog-master.yaml] (please add changelog or check your Liquibase configuration) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
I do have this in my build.gradle:
sourceSets { main { resources { srcDir 'grails-app/migrations' } } }
In total I've done 3 dbm-updates: generating a database from a changelog, adding a few columns and now the latest one. The first two worked perfectly, the third one resulted in this issue.
I've also tried turning off second level cache, running new dbm-updates, disabling liquibase in application.yml, disabling liquibase "check-change-log-location" option, terminating and re-creating the AWS EC2 instance - nothing has worked so far.
I'm running out of ideas - do you think the dbm-update might have caused this? Do you have any suggestions on how to fix it?
Don't know if this is a grails 3 issue or the plugin issue, or if I shouldn't be able to do this.
I want to preload data into the database for known datatypes, (reference data).
This post is from 2010 so it is very possible capabilities have changed we shouldn't be able to do this
http://refactr.com/blog/2012/01/grails-database-migration-gotchas/
but I'd like to be able to call save()
on a domain class from inside a change set however i'm getting a no session found for current thread
.
Is this intended behaviour or should i be able to do this?
Having something that looks like:
databaseChangeLog = {
changeSet(author: "Rick Astley", id: "Not a stranger to love") {
preConditions {
grailsCondition {
check {
sql.<literally anything>
...
will fail as it returns the exception
portal-changelog.groovy : No such property: sql for class: never-gonna-give-you-up.Script1
Trying to run some of the dbm* commands produces an odd issue where a domain class is using springSecurityService
java.lang.NullPointerException: Cannot invoke method encodePassword() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91) ~[groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48) ~[groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) ~[groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35) ~[groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) ~[groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) ~[groovy-2.4.5.jar:2.4.5]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[groovy-2.4.5.jar:2.4.5]
at com.lunchify.auth.User.encodePassword(User.groovy:88) ~[main/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_40]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_40]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_40]
at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_40]
protected void encodePassword() {
println '<<<<<<<<<>>>>>>>>>'
println springSecurityService.encodePassword(password)
password = springSecurityService ? springSecurityService.encodePassword(password) : password
}
This issue only came up due to me attempting to use the SSS in a println, but it might want to be changed in this plugin to loadafter spring-security-core
I've run into a problem in our app that makes the dbm-update and all the other commands say not found when running them. The only one that works is 'dbm-create-changelog'.
grails> dbm-create-changelog
| Error The dbm-create-changelog command requires a filename (Use --stacktrace to see the full trace)
grails> dbm-update
FAILURE: Build failed with an exception.
BUILD FAILED
I've attached an example app.
dbmigrationtest.zip
Hi,
Seems to be a problem when trying to use "grails.plugin.databasemigration.ignoredObjects" property to ignore some domain classes. Nothing happens, as in domain classes aren't being ignored.
I also tried to use "grails.plugin.databasemigration.excludeObjects" as the source code seems to be looking out for this property. I get the following when using the above.
Command execution error: liquibase.command.CommandExecutionException: java.lang.NullPointerException
This happens with the grails dbm-gorm-diff command.
grails version=3.1.8
grails-database-migration version=2.0.0.RC4
java version=1.8.0_91 (64-bit)
hibernate4 version=5.0.10
When using version 2.0.0 of the plugin and running it, I get the following:
Command execution error: liquibase.diff.output.DiffOutputControl.(ZZZ[Lliquibase/diff/compare/CompareControl$SchemaComparison;)V
When using version 2.0.0.RC4 of the plugin, it works.
I can see that there has been changes made in the Liquibase dependencies. I am having little luck coaxing any relevant info out of gradle.
dbm-gorm-diff
will use my custom Dialect and generate a changeset with my org.joda.time.DateTime columns to timestamptz
dbm-generate-gorm-changelog
will write timestamp
I tried something else : writing lol
when a Boolean type is used. Both commands will write a changes with lol
.
So there is something weird with timestamp
ALSO
dbm-gorm-diff
will generate a changeset with int4
for an Integer but dbm-generate-gorm-changelog
will generate a changeset with int
Versions :
Grails 3.1.6
database-migration-plugin 2.0-RC4
DB postgressql 9.4 with driver 9.4.1208.jre7
joda-time-plugin 2.0.0
usertype.jodatime 2.0.1
Hi,
Assumption: you have a core plugin (used in multiple apps) and the grails-apps.
If you change a domain class in core, all apps need a separate migration. why it not possible to link the changelog-core.groovy (in core plugin) in all grails-apps. now we can create migrations just for the core domain classes, which is automatically done in all apps?
Hi,
I'm trying to create indexes from a domain class mapping and I'm getting exceptions thrown.
here's the mapping:
class CompanyCustomer {
static constraints = {
}
static mapping = {
customer column: 'customer_id', index: 'customer_idx'
}
Customer customer
Company company
Date dateCreated
Date dateDeactivated
}
here's the command:
$grails dbm-gorm-diff --debug
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:dbmGormDiff
objc[10755]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
Configuring Spring Security Core ...
... finished configuring Spring Security Core
Command execution error: liquibase.command.CommandExecutionException: java.util.ConcurrentModificationException
:dbmGormDiff FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':dbmGormDiff'.
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 23.878 secs
| Error Error occurred running Grails CLI: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 (Use --stacktrace to see the full trace)
Any ideas what's going on?
Let me know if you want the full stack trace.
When using dataSource.passwordEncryptionCodec and running any dbm-* commands fails with a SQLException for failing to log into the database. I have verified that the application connects to the database just fine when doing 'grails run-app'. Also, if removing the dataSource.passwordEncryptionCodec and storing the database password in plain text, the dbm-* commands work just fine. So it is definitely an issue with the dataSource.passwordEncryptionCodec and what ever the plugin is doing to connect to the database. It is probably ignoring this property and using the encrypted password to try to connect.
See liquibase/liquibase-hibernate#134
Affects e.g. UserRole if using spring-security-core plugin.
So if i have specified indexes in my gorm mappings as explained here
And generate dbm-generate-gorm-changelog - it does not automatically create indexes.
I have a changeset that is clearing a lot of records (2.5M) before adding a constraint. the problem is that the connection times out, could this be a problem with the configuration of the pool? Im commiting every update.
changeSet(author: "oluna", id: "20160315 ...") {
comment('Clear orphan dependencies')
grailsChange {
change {
def limit = 500000
def totalDeps = sql.firstRow("select count(*) as total FROM ...")
log.info("Orphans: ${totalDeps.total} to clear")
def numBatchs = Math.ceil(totalDeps.total / limit).intValue()
(1..numBatchs).each{
log.info(String.format("Cleared %.2f %%", it*100/numBatchs))
sql.executeUpdate("""
DELETE FROM task_dependency WHERE task_dependency_id IN (
SELECT id FROM (
SELECT DISTINCT task_dependency_id as id FROM task_dependency td
LEFT OUTER JOIN asset_comment t1 on t1.asset_comment_id = td.asset_comment_id
WHERE t1.asset_comment_id IS NULL
LIMIT ${limit}
) t
);
""")
sql.commit()
}
log.info("Orphans cleared!")
log.info("Creating Fk-Constraint")
sqll.execute("""
ALTER TABLE task_dependency
ADD CONSTRAINT fk_task_dep_asset_comment_id
FOREIGN KEY (asset_comment_id) REFERENCES asset_comment (asset_comment_id)
ON UPDATE CASCADE
ON DELETE CASCADE
""")
}
}
}
[localhost-startStop-1] DEBUG liquibase - Custom SQL executed
[localhost-startStop-1] ERROR liquibase - Could not release lock
liquibase.exception.LockException: liquibase.exception.UnexpectedLiquibaseException: java.sql.SQLException: Connection has already been closed.
at liquibase.lockservice.LockService.releaseLock(LockService.java:152)
numbatch is the number of iterations calculated between the number of rows and the limit of the batch
So, i am using grails 3.1.6
However, if i have grails.plugin.databasemigration.updateOnStart = true
-and i do run-app the migration will run before BootStrap, and database is created properly.
But for test environments, grails.plugin.databasemigration.updateOnStart = true doesnt work somehow, and i have to run dbm-update to create the initial database.. but there's no way for migration to run, as it would always fail on BootStrap.
This was not the case with older versions of grails. I think it used to work fine.
Accidentally submitted. Don't know how to delete this issue.
Hi,
I am encountering an NPE when running dbm-gorm-diff and using Oracle 11g as a database. It seems to work with H2 and also works in Oracle if I just change something in an existing domain class. But the error occurs after creating a new domain class.
This is the output of the grails command:
$ grails dbm-gorm-diff --stacktrace --debug
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:dbmGormDiffCommand execution error: liquibase.command.CommandExecutionException: java.lang.NullPointerException
FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':dbmGormDiff'.
> Process 'command 'C:\Projekte\sdk\jdk\jdk1.7.0_80\bin\java.exe'' finished with non-zero exit value 1
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':dbmGormDiff'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Projekte\sdk\jdk\jdk1.7.0_80\bin\java.exe'' finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367)
at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)
at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:75)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:227)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 70 more
BUILD FAILED
Total time: 23.195 secs
Error |
Command [dbm-gorm-diff] error: Could not execute build using Gradle installation 'C:\Projekte\sdk\gradle-2.9'. (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
org.gradle.tooling.BuildException: Could not execute build using Gradle installation 'C:\Projekte\sdk\gradle-2.9'.
at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:59)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:57)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:72)
at org.grails.cli.gradle.GradleUtil$_runBuildWithConsoleOutput_closure5.doCall(GradleUtil.groovy:122)
at org.grails.cli.gradle.GradleUtil$_withProjectConnection_closure3.doCall(GradleUtil.groovy:102)
at org.grails.cli.gradle.GradleUtil$_withProjectConnection_closure3.call(GradleUtil.groovy)
at grails.io.support.SystemOutErrCapturer.withNullOutput(SystemOutErrCapturer.groovy:64)
at org.grails.cli.gradle.GradleUtil.withProjectConnection(GradleUtil.groovy:101)
at org.grails.cli.gradle.GradleUtil.runBuildWithConsoleOutput(GradleUtil.groovy:117)
at org.grails.cli.gradle.GradleInvoker.invokeMethod(GradleInvoker.groovy:50)
at org.grails.cli.gradle.commands.GradleTaskCommandAdapter.handle(GradleTaskCommandAdapter.groovy:65)
at org.grails.cli.profile.AbstractProfile.handleCommand(AbstractProfile.groovy:452)
at org.grails.cli.GrailsCli.handleCommand(GrailsCli.groovy:372)
at org.grails.cli.GrailsCli.handleCommand(GrailsCli.groovy:345)
at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:274)
at org.grails.cli.GrailsCli.main(GrailsCli.groovy:162)
Caused by: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':dbmGormDiff'.
at org.gradle.initialization.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:74)
at org.gradle.initialization.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:47)
at org.gradle.initialization.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:101)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':dbmGormDiff'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
... 42 more
Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Projekte\sdk\jdk\jdk1.7.0_80\bin\java.exe'' finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367)
at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)
at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:75)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:227)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 70 more
Error |
Command [dbm-gorm-diff] error: Could not execute build using Gradle installation 'C:\Projekte\sdk\gradle-2.9'.
To help reproduce the problem I created an example project: https://github.com/trettstadtos/database-migration-gorm-diff-npe. The project is a freshly created Grails app using Grails 3.1.5 and Gradle 2.9. I added the configuration for the grails-database-migration plugin in build.gradle, added a new domain class and modified the datasource in application.yml
You need to run an Oracle Database server locally. The version I use is Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production. I created a new user as follows:
$ sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Fr Aug 26 08:55:30 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter user-name: system
Enter password: secret
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> create user dbmigration identified by test;
User created.
SQL> grant "DBA" to dbmigration;
Grant succeeded.
SQL> grant unlimited tablespace to dbmigration;
Grant succeeded.
SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
Let me know if you need any more information.
Regards,
Tobias
Using grails 3.0.11, grails-database-migration 2.0.0.RC1 and java version "1.7.0_72".
When execute "$ grails dbm-gorm-diff add_autho.groovy --add" generate empty file and create table.
Steps:
$ grails create-app demo-grails-migration
$ cd demo-grails-migration
File "build.gradle":
Add:
buildscript {
dependencies {
...
classpath 'org.grails.plugins:database-migration:2.0.0.RC1'
}
}
dependencies {
...
runtime 'org.grails.plugins:database-migration:2.0.0.RC1'
runtime 'mysql:mysql-connector-java:5.1.29'
}
And sourceSets:
sourceSets {
main {
resources {
srcDir 'grails-app/migrations'
}
}
}
Execute
$ grails dbm-generate-changelog changelog.groovy
File "grails-app/migration/changelog.groovy" created successful. [OK]
Config database:
"grails-app/conf/application.yml"
dataSource:
pooled: true
jmxExport: true
driverClassName: com.mysql.jdbc.Driver
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
username: root
password: root..
environments:
development:
dataSource:
url: jdbc:mysql://localhost/demo
Now
$ grails dbm-update
After this command, table DATABASECHANGELOG and DATABASECHANGELOGLOCK are created in database with success. [OK]
$ grails create-domain-class demo.Author
Add some fields
package demo
class Author {
String name
Integer age
static constraints = {
}
}
$ grails dbm-gorm-diff add_autho.groovy --add
After command "dbm-gorm-diff":
New entry in "grails-app/migration/changelog.groovy" [OK]
File "grails-app/migrations/add_author.groovy" created but is empty. [NOK]
Table author has been created [NOK].
Table DATABASECHANGELOG is empty [OK].
In grails 2.2.4 and database-migration:1.3.8, after execute
$ grails dbm-gorm-diff add_autho.groovy --add
File "add_autho.groovy" has data to update database and table do not exist in database, run dbm-update, line is generate in DATABASECHANGELOG and table is created.
I can't seem to run within a multi-module gradle project the 'dbm-gorm-diff' command:
Command execution error: liquibase.command.CommandExecutionException: java.util.ConcurrentModificationException
dbmGormDiff FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':dbmGormDiff'.
Process 'command '/usr/lib/jvm/java-7-oracle/bin/java'' finished with non-zero exit value 1
Try:
Run with --info or --debug option to get more log output.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':dbmGormDiff'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-oracle/bin/java'' finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367)
at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:31)
at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:75)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:227)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 70 more
This may be just through a lack of documentation but my understanding of ignoredObjects is a list of strings of class objects to ignore for generating tables.
Not sure if this is class.simpleName or class.canonicalName but either way its still producing changesets for the classes i want to ignore.
When executing dbmGenerateGormChangelog
I get Command execution error: Bean named 'sessionFactory' must be of type [org.springframework.beans.factory.FactoryBean], but was actually of type [org.hibernate.internal.SessionFactoryImpl]
Grails: 3.2.0.M2
database-migration: 2.0.0.RC4 and 2.0.0.BUILD-SNAPSHOT
Sample project: https://github.com/KerchumA222/database-migration-issue
This is preventing any diff to be generated as we need to use 'create','create-drop','update' or 'validate' when using application.yml
on 2.0.0-RC4
Command execution error: liquibase.command.CommandExecutionException: java.lang.NullPointerException
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.