【问题标题】:How to save a string too large for a column?如何保存对于列来说太大的字符串?
【发布时间】:2014-03-19 16:11:17
【问题描述】:

我有这个域类:

class Jobs {

String query

static constraints = {
    query(maxSize: 63760)
    query type: "text"
}

 static mapping = {
//And I tried all this:
// sqlType: "char", length:63760
// query sqlType: DbSupport.bigStringType
// table 'HYPJobs'
//query sqlType: "text"
//query(nullable: true, maxSize: 64000)
// query type:'materialized_clob',sqlType: "clob"
}

}

但是当我运行它时,我仍然有这个错误:

ORA-12899:列“Myproject”.“JOBS”.“QUERY”的值太大(实际:1395,最大值:255)

任何人???

【问题讨论】:

  • 您是否尝试过静态映射 = { 查询类型:'text' }?
  • 是的!我做到了,所有可能的组合在我的绝望中!
  • DataSource.groovy 中的 dbCreate 设置是什么?
  • 另外,数据库中表的模式是什么?列类型为?
  • 架构是 varchar(63760);我在 Oracle 中有一个与 DataSource.groovy 的连接,但该值来自 TeraData

标签: oracle grails grails-orm grails-domain-class


【解决方案1】:

这应该可以工作

class Jobs {

  String query

  static constraints = {
    query maxSize: 63760 // remove this unless you really want to limit the size to 63760
  }

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

【讨论】:

    【解决方案2】:

    根据错误消息,实际的表列是 varchar2(255),而您正在尝试插入一个包含 1395 个字符的值。

    如果您想要更长的值,则需要增加数据库中的列长度。但是,varchar2 列不能超过 4k(无论如何,直到 12c);如果您实际上需要高达 64k 的值,那么您需要将该列设置为 clob 。只需更改 Groovy 中的声明(或任何地方,我不确定 varchar(63760) 在哪里!)不会影响数据库本身中列的大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多