【问题标题】:How to change Column Type with db-migrate in Grails?如何在 Grails 中使用 db-migrate 更改列类型?
【发布时间】:2013-08-05 12:25:19
【问题描述】:

我正在使用 Grails 2.2.4 和 db-migrate 插件 1.3.5。我的数据库是mysql。

与数据库同步的现有模型是:

 class User {
    String description
 }

Hibernate 用它在 mysql 中生成一个 varchar(255)。我需要一个更长的文本列,所以我做了:

 class User {
    String description

static mapping = {
    description type: 'text'
}
 }

然后我运行 dbm-gorm-diff change-column.groovy -add

并得到以下错误。我该怎么办?

| Starting dbm-gorm-diff
| Error org.hibernate.MappingException: No Dialect mapping for JDBC type: 7
| Error     at grails.plugin.databasemigration.GormDiff.areEquivalent(GormDiff.groovy:146)
| Error     at grails.plugin.databasemigration.GormDiff.isDifferent(GormDiff.groovy:114)
| Error     at grails.plugin.databasemigration.GormDiff.compare(GormDiff.groovy:68)
| Error     at grails.plugin.databasemigration.ScriptUtils.createAndPrintFixedDiff(ScriptUtils.groovy:244)
| Error     at DbmGormDiff$_run_closure1_closure2_closure3.doCall(DbmGormDiff:53)
| Error     at grails.plugin.databasemigration.MigrationUtils.executeInSession(MigrationUtils.groovy:132)
| Error     at DbmGormDiff$_run_closure1_closure2.doCall(DbmGormDiff:50)
| Error     at grails.plugin.databasemigration.ScriptUtils.executeAndWrite(ScriptUtils.groovy:104)
| Error     at DbmGormDiff$_run_closure1.doCall(DbmGormDiff:49)

【问题讨论】:

  • 可能是插件的错误
  • @JamesKleeh 你知道有什么解决办法吗?
  • 您可以使用sqlType,但此时您是特定于数据库的。
  • 你能发布一个答案吗?因为我只使用mysql,所以这可能不是问题。
  • 我遇到了类似的问题。这可能会有所帮助:Issue with dbm version 1.3.3。升级到 1.3.8 有帮助!

标签: spring grails grails-2.0 grails-domain-class liquibase


【解决方案1】:

正如@raxith 评论的那样,使用grails 2.2.5dbm1.3.2 升级到1.3.8 对我有用

【讨论】:

    【解决方案2】:

    您可以将其更改为 sqlType 以让您的 dbm-gorm-diff 运行。然后再改回来。与插件的此类错误有关的几个 JIRA 问题。

    【讨论】:

    • 你的意思是这样的:static mapping = { description sqlType: 'text' }
    • 能否详细说明
    猜你喜欢
    • 2015-06-27
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2017-03-06
    • 2011-12-01
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多