如何为列保存太大的字符串?

时间:2014-03-19 16:11:18

标签: oracle grails gorm grails-domain-class

我有这个域类:

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)

任何人???

2 个答案:

答案 0 :(得分:1)

从错误消息中,实际的表格列为varchar2(255),您试图插入一个包含1395个字符的值。

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

答案 1 :(得分: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'
  }
}