【问题标题】:String size in Grails too big for database fieldGrails 中的字符串大小对于数据库字段来说太大了
【发布时间】:2018-09-20 22:11:06
【问题描述】:

我有用于向站点管理员发送电子邮件的消息域类

class Message {

  String name
  String subject
  String body

}

我认为字符串不会有最大大小,但是当人们输入太大的消息时,我会在我的日志文件中看到异常。现在我设置了一个约束,将消息的大小限制为 250,但不能使其更大,否则保存失败。我正在使用 PostgreSQL 9.1.1 和 Grails 1.3.7。有谁知道解决这个问题的方法吗?

【问题讨论】:

    标签: grails


    【解决方案1】:

    您可以使用约束来指定数据类型:

    static constraints = {
      body type:'text'
    }
    

    【讨论】:

    • 这不起作用。该列生成为VARCHAR(250)
    【解决方案2】:

    将此添加到您的域类:

    static constraints = {
        body(maxSize:1000)
    }
    

    【讨论】:

      【解决方案3】:

      constraints 块中设置type 不起作用!

      改为放入mapping 块。

      static mapping = {
         body type: 'text'
      }
      

      【讨论】:

        【解决方案4】:

        VARCHAR 的最大大小在数据库中设置,Grails 对此没有任何发言权。你可以做的是告诉 Grails 你需要什么,它会生成使用 clob 而不是字符串的 DDL。

        更改列的映射以使用类型:“文本”,同时在约束中添加所需的 maxSize。 Grails 会从中计算出它应该将列数据类型设置为 clob。

        (通常一个 clob 字段最多可容纳 4GB,尽管有些数据库允许更改。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-15
          • 1970-01-01
          • 1970-01-01
          • 2014-12-18
          • 2013-06-07
          • 2021-06-02
          相关资源
          最近更新 更多