grails - Grails-上线后更新域-我会丢失数据吗?

标签 grails schema upgrade

我在编写第一个grails应用程序的过程中途中途。到目前为止,一切进展顺利,但我只是意识到,当我上线时,我将无法如此大地改变领域模型(Domain Model)。

该应用程序由MySql数据库支持,我目前只有一个感兴趣的对象“Person”。如果在部署后我想添加一个“组”域,以使一个人有多个组,那么我对数据库要做什么?我会丢失MySQL数据库中的任何现有行吗?

人们通常如何处理这种情况?有没有一种聪明的方法来设计域或一个简单的工具来管理MySql表中列的添加?

V1

class Person {      
  String firstName;      
  String lastName;      
  String email;      
  String phoneNumber;    
}

V2
class Person {
  static hasMany = [groups:Group]
  String firstName;      
  String lastName;      
  String email;      
  String phoneNumber;    
}

亲切的问候,

加夫

最佳答案

在生产中,您需要确保Grails不会修改数据库模式。大多数人处理此问题的方法是在开发中对更新进行建模,然后创建SQL更新脚本来更新生产数据库并在部署之前应用它们。在这种情况下,grails提供的Schema Export工具会有所帮助。

还有诸如DbMigrate插件之类的工具来解决这些问题。

关于grails - Grails-上线后更新域-我会丢失数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2724844/

相关文章:

mysql - 我该如何改进这个数据库,表之间的关系是否良好?

python - pip 升级cv2

Amazon AWS EC2 : How to upgrade Ubuntu to the next version, 中的 Ubuntu 实例,所以它会在重新启动后工作吗?

windows - Spring Tool Suite (STS) 升级失败

jquery - Jediatable with grails - 如何在更改 Controller 中的字段数据时获取其他参数?

grails - 对于 m-m 关系,mappedBy 和 belongsTo 有什么区别?

Java:将 XML 映射到其他 XML(翻译)

grails - 将具有预定义值的域类映射到表

hibernate - 无法以一对一关系更新拥有方的属性

api - 如何查询 elasticsearch 只有一种类型的记录?