2012-02-25 47 views
6

我有一个用于发送电子邮件到网站消息域级管理员字符串大小太大的数据库字段

class Message { 

    String name 
    String subject 
    String body 

} 

我以为字符串不会有一个最大尺寸,但是当把人的消息说太大,我在我的日志文件中看到异常。现在我放了一个约束来限制邮件的大小为250,但不能让它变大,否则保存失败。我正在使用PostgreSQL 9.1.1和Grails 1.3.7。有谁知道解决这个问题的方法吗?

回答

8

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

static constraints = { 
    body type:'text' 
} 
+0

这没有奏效。该列是作为'VARCHAR(250)'生成的 – 2017-11-17 09:17:47

7

添加到您的域类:

static constraints = { 
    body(maxSize:1000) 
} 
0

设置typeconstraints块不起作用。改为执行以下操作。

static mapping = { 
    body type: 'text' 
} 
0

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

更改要使用的列的映射类型:“text”,同时在约束中添加所需的maxSize。 Grails会从中发现它应该将列数据类型设置为clob。

(通常是CLOB字段将持有高达4GB,虽然有些数据库允许改变这种。)

相关问题