이 강력한 도구를 배우기 위해 grails로 개인 프로젝트를 개발하고 있습니다. 내 포스트 그레스 데이터베이스에서 일부 데이터 (후 기록)을 만든 후Grails는 널 대신 NULL을 사용하지 않고 테이블을 변경합니다.
class Post {
long id;
Date creationDate;
String text;
byte[] image;
Style style;
long likeCount;
long dislikeCount;
User owner;
//coordinates on the wall
int x;
int y;
//this is probably to remove
static hasMany = [judgment : Judgment];
static constraints = {
text(nullable:true, maxSize:5000);
image(nullable:true, maxSize:1000000);
creationDate(nullable:true);
x(nullable:true);
y(nullable:true);
}
}
내가 x와 y를 추가 : 내 도메인 클래스 "포스트"에 두 개의 새로운 필드 (X, Y)를 추가 할 때 이 나는이 문제가 발생했습니다. 하지만 실행 - 응용 프로그램 때 Grails의에서이 오류가 콘솔가 온다 : 내가 X, Y는 null로 제약 선언 때문에
| Error 2012-03-04 12:04:23,670 [pool-5-thread-1] ERROR hbm2ddl.SchemaUpdate - Unsuccessful: alter table post add column x int4 not null
| Error 2012-03-04 12:04:23,672 [pool-5-thread-1] ERROR hbm2ddl.SchemaUpdate - ERROR: column "x" contains null values
이 매우 이상하다 .. 그래서 Grails를 내 테이블 선언 X를 변경하려고하는 이유와 y가 null이 아니겠습니까?
당신은 매우 감사합니다, 대단히 감사합니다! 항상 원시가 아닌 값을 사용하는 것이 더 좋다고 생각하십니까? 데이터베이스 스키마를 변경하고 새 필드를 추가해야한다고 가정합니다. 기본이 아닌 유형을 사용하면 기존 레코드의 기본값이 null이므로이 문제를 방지해야합니다. – Giuseppe