防止在grails数据源更新模式下引导数据
如何防止grails应用程序中的数据引导。当我们像这样配置DataSource.groovy时防止在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
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;
}
}
}