mongodb - Grails和MongoDb(永久实例删除)

标签 mongodb grails

如果我有一个Grails应用程序,该应用程序曾用于将一些域对象持久保存到数据库中(在这种情况下为MongoDb,但可能没有关系),并且我修改了域类,请说我添加了更多属性或删除了一些属性。现在,具有较新版本域类的应用程序的修改版本是否仍可以识别已经持久存在的域实例旧版本?

更重要的是,如果我现在使用新版本的域类重新启动Grails应用程序,它将删除(或采取任何措施)已经持久化的旧版本的域对象吗? 我正在尝试追寻我面临的类似问题,但是我在一个团队中,所以我不确定该应用程序是否从db中删除了旧对象(我认为不是)还是有人系统用户删除了。

最佳答案

Grails处理数据库的方式取决于DataSource.groovy中dbCreate属性的值。

如果您声明

dataSource {
    dbCreate = "update"
}

那么您添加到域类中的所有其他属性将作为列添加到数据库中。请注意,这不会删除任何已经存在的列。假设您有一个名为x的属性,并想将其替换为名为y的属性,这将在数据库中创建一个y列,但x列仍将保留。

这里是dbCreate的可能值和行为的列表
  • 创建-删除现有架构。在启动时创建架构,首先删除现有表,索引等。
  • create-drop -与create相同,但是在应用程序完全关闭时也会删除表。
  • 更新-创建丢失的表和索引,并在不删除任何表或数据的情况下更新当前模式。请注意,这不能正确处理许多模式更改,例如列重命名(剩下的旧列包含现有数据)。
  • 验证-不对数据库进行任何更改。将配置与现有数据库架构进行比较,并报告警告。
  • 任何其他值-不执行任何操作

  • 希望这可以帮助

    关于mongodb - Grails和MongoDb(永久实例删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26867378/

    相关文章:

    eclipse - 显示和表达式 View 给出错误

    Grails - Bootstrap - 空指针而不是服务

    python - 有没有办法在 mongodb 中获取集合的所有字段名称?

    java - 使用 JasperReports 库和 MongoDB 生成 PDF

    java - EclipseLink MongoDB 连接

    grails - 删除 Grails 中的插件

    grails - 如何将 Grails 2 插件资源复制到 Grails 应用程序?

    c# - 如何使用 c# 驱动程序删除 mongodb 文档中的嵌套数组元素

    linux - 使用配置文件启动 mongod 时出现未知选项

    javascript - 在另一个页面上调用 javascript 函数/按钮单击事件