【问题标题】:In grails need to change a field in a domain class to nullable after I have already gone to production在我已经投入生产之后,在 grails 中需要将域类中的字段更改为可为空
【发布时间】:2011-05-09 20:15:09
【问题描述】:

我有一个域类,其中包含一个字符串字段,我将其更改为可为空。在 DataSource.groovy 中,我将模式设置为“更新”。有什么方法可以让 grails 在不更改为“create”或“create-drop”的情况下更改 MySql。我需要MySql中的数据。

后续问题:我可以使用“ALTER TABLE myProject_my_domain_class MODIFY the_string varchar(20) NULL;”行手动进行此更改这是可接受的做法吗?我也对链接​​到另一个域类的字段有同样的问题:

class myDomainClass {
  MyOtherDomainClass otherThing
}

改成

class myDomainClass {
  MyOtherDomainClass otherThing
  static constraints = {
    otherThing(nullable:true)
  }
}

如果手动 SQL ALTER 是唯一的方法,那么编写 SQL 命令以便保留域类之间的 Key 索引的正确方法是什么?

【问题讨论】:

  • 看来如果我只是做“ALTER TABLE myProejct_my_domain_class MODIFY other_thing_id bigint(20) NULL;”什么都没有。仍然想知道我是否使用了 Datasource.groovy 错误或其他一些 n00bsauce 答案。

标签: sql grails null nullable alter-table


【解决方案1】:

您是否尝试过数据库迁移插件?

http://www.grails.org/plugin/database-migration

使用它的过程比仅设置 dbCreate="update" 更手动一些,但它为您提供了更大的控制权,并且它可以进行更改,例如使列可为空。此外,您甚至可以将小的架构更改检查到您的版本控制系统中,这样您就可以记录所做的更改。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 2013-09-10
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多