未指定dbCreate时会发生什么?

时间:2013-09-15 21:56:39

标签: grails

根据the official Grails documentation,建议不要在生产中指定dbCreate属性。那么,在那种情况下会发生什么?当生产war文件最初加载到容器(例如Tomcat)时,Grails会做任何事情,例如验证吗?如果验证完成,与dbCreate =“validate”的区别是什么?或者根本没有,让开发人员确保域类和数据库模式之间的映射是否正确?提前谢谢。

3 个答案:

答案 0 :(得分:11)

如果未指定dbCreate,则设置为空字符串(dbCreate = ""),或者设置为除create,create-drop,update或validate之外的任何内容,则不会发生任何事情。数据库无法创建,验证或更新。

From the doc,您可以使用create,create-drop,update或validate,以及“任何其他值 - 什么都不做”。它还说“你也可以完全删除dbCreate设置,一旦你的模式相对稳定,这是明确的,当你的应用程序和数据库部署在生产环境中时,建议这样做。然后通过适当的迁移来管理数据库更改,无论是使用SQL脚本还是迁移像Liquibase这样的工具(数据库迁移插件使用Liquibase并与Grails和GORM紧密集成)。“

答案 1 :(得分:1)

保持dbCreate为空是一个非常糟糕的主意:配置与各个插件的配置合并,如果配置系统决定您没有设置dbCreate属性并决定使用,则不会发生任何好处使用随机插件提供的值。如果该插件在您的多千兆字节(甚至是生产)数据库上订购drop-create该怎么办?

答案 2 :(得分:0)

尽管接受的答案仍然是正确的并且问题没有标记特定版本,但我必须指出 grails docs 自从 grails 2 以来发生了一些变化:

<块引用>

建议将 dbCreate 设置设置为“none” 相对稳定,当你的应用程序和数据库 部署在生产中。然后通过管理数据库更改 正确的迁移,无论是使用 SQL 脚本还是迁移工具,如 Flyway 或 Liquibase。数据库迁移插件使用 Liquibase。