防止在grails数据源更新模式下引导数据

防止在grails数据源更新模式下引导数据,grails,grails-2.3,Grails,Grails 2.3,如何防止grails应用程序中的数据引导。当我们像这样配置DataSource.groovy时 development { dataSource { dbCreate = "update" url = "jdbc:mysql://localhost:3306/test" pooled = true driverClassName = "com.mysql.jdbc.Driver" dialect = org

如何防止grails应用程序中的数据引导。当我们像这样配置DataSource.groovy时

 development {
    dataSource {
        dbCreate = "update"
        url = "jdbc:mysql://localhost:3306/test"
        pooled = true
        driverClassName = "com.mysql.jdbc.Driver"
        dialect = org.hibernate.dialect.MySQL5InnoDBDialect
        username = "root"
        password = "root"
    }
}

BootStrap.groovy

class BootStrap {
def bootstrapService
def grailsApplication
def init = { servletContext ->
    switch (Environment.getCurrent().name) {
        case "dev":
            bootstrapService.bootstrapDummyData()
            break;
        case "test":
            bootstrapService.bootstrapDummyData()
            break;
    }
}
def destroy = {
}
我希望在将数据源配置为更新模式时不要调用
bootstrapService.bootstrapDummyData()
。i、 e.
dbCreate=“update”


例如上面的代码。如果用户是在bootstarp中创建的。是否已创建第一个检查用户。如果不创建对象。

请您清楚地解释您的问题。我在更新模式下配置了DataSource.groovy。当我运行grails-app时,它调用BootStrap.groovy,这将导致数据库中的唯一约束验证。因为我的数据库里已经有数据了。所以我想当我在更新模式下运行grails应用程序时,它不应该被称为BootStrap.groovy。我猜你的BootStrap中有一些创建DB实体的代码吧?请在问题中包含您的
Boostrap.groovy
代码(请参见编辑链接)。一种方法是检查实体是否存在(搜索某个唯一的contrstraint),并仅在实体不存在时创建该实体。grails中是否有任何方法限制我们的应用程序调用BootStrap.groovy。您可以检测正在运行的dev/test/prod环境,并且只为
dev
环境运行一些代码。请参阅->
Environment.current
我们可以通过GrailAppliance访问dataSource dbCreate属性。因此,如果在设置dbCreate=“update”时不想调用引导代码,则此代码可以工作
 class BootStrap {
 def bootstrapService
 def grailsApplication
 def init = { servletContext -> 
 if(grailsApplication.config.dataSource.dbCreate == "create-drop"){
    switch (Environment.getCurrent().name) {
        case "dev":
            bootstrapService.bootstrapDummyData()
            break;
        case "test":
            bootstrapService.bootstrapDummyData()
            break;
     }
   }
}
 class BootStrap {
 def bootstrapService
 def grailsApplication
 def init = { servletContext -> 
 if(grailsApplication.config.dataSource.dbCreate == "create-drop"){
    switch (Environment.getCurrent().name) {
        case "dev":
            bootstrapService.bootstrapDummyData()
            break;
        case "test":
            bootstrapService.bootstrapDummyData()
            break;
     }
   }
}