当数据源丢失时,您如何防止Bootstrap数据迁移运行?

时间:2013-02-18 18:18:26

标签: hibernate grails configuration gorm grails-2.0

grails v2.0.1配置已外部化为一个文件,因此它可以位于安全分区上。

这是通过修改Config.groovy和DataSource.groovy

来完成的
grails.config.locations = ["file:/Volumes/secure/local.config.groovy"]

当这个添加的配置位置不可用时,Bootstrap代码无法连接到数据库,我收到了这个令人困惑的错误:

运行Grails应用程序 错误util.JDBCExceptionReporter - 未找到表“USER”; SQL语句: 从用户this_选择count(*)为y0_ ;嵌套异常是org.hibernate.exception.SQLGrammarException:无法执行查询

我想要一个错误,告诉我数据源不可用。我需要更改我的grails配置才能做到这一点?

class BootStrap {

    def init = { servletContext ->

        if (!User.count()) {
            setupAdminUsers() // inserts admin user for shiro
        }
    }
}

2 个答案:

答案 0 :(得分:1)

这些是旧式引导数据迁移,应作为迁移添加(使用database migration插件)

答案 1 :(得分:0)

在运行GORM之前添加条件更好,但似乎仍然是错误的。

class BootStrap {

    def grailsApplication    

    def init = { servletContext ->

        if (!grailsApplication.resources) {
           throw new RuntimeException("data source is missing")
        }

        if (!User.count()) {
            setupAdminUsers()
        }
    }
}