欢迎进入Wiki » FAQ » 启动工程时,为什么没有自动创建或更新数据库表结构?

启动工程时,为什么没有自动创建或更新数据库表结构?

在2014-03-20 14:49上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

    启动工程时,默认情况下,grails会自动创建或更新数据库表结构,如果发生没有(或仅有部分)自动创建的情况,可以依次检查以下配置。

  • DataSource配置中,dbCreate没有配置,只有为 create、create-drop、update的一种时,启动时才会触发数据库 schema update
  • 如果是开发环境的 run-app,并且安装了插件 BroToolkit,则可以检查一下 Config.groovy 中是否启用了 bropen.toolkit.datasource.schema.smartupdate,如果启用了的话,可以尝试删除文件 target/domainClasses.hash 再试
    (4.0.3已废弃该配置,但是默认启用了其他方式,可以尝试删除系统临时文件夹里的 "工程名_domains.cache" 文件。)
  • 如果数据库是Oracle,可以检查 DataSource 中配置的用户是不是有 EXP_FULL_DATABASE 或者 IMP_FULL_DATABASE 的权限,并且是否有其他表空间的库表结构和当前应用的库表结构是一样的。(有多个表空间的开发环境很容易发生这种问题)
    这种情况下,如果是未安装插件 BroToolkit 的工程,可以收回该用户的上述两个权限。
    如果安装了 BroToolkit 插件,则可以在 DataSource 中配置对应的schema,配置示例如下:
    hibernate {
        properties {
            oracle.schame = "bropen"                 // 配置表空间
           oracle.nls_sort = "SCHINESE_PINYIN_M"    // 按中文拼音排序
       }
        properties_auditlog {                        // 审计日志
           oracle.schame = "broalog"
       }
    }
    ......

    dataSource {
        configClass = bropen.toolkit.orm.HibernateConfiguration
        username = "bropen"
       ......
    }
    dataSource_auditlog {
        configClass = bropen.toolkit.orm.HibernateConfiguration
        username = "broalog"
       ......
    }
在2013-10-29 15:18上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号