2011-10-10 2 views
6

작은 Grails 애플리케이션을 구축 중이며 개발 환경에서 서버가 다시 시작될 때까지 데이터를 유지하려고합니다.Grails에 내 DB 데이터가 보존되지 않습니다.

development { 
    dataSource { 
     dbCreate = "update" // one of 'create', 'create-drop','update' 
     url = "jdbc:hsqldb:mem:devDB" 
    } 
} 

내가 서버를 다시 시작할 때마다, 모든 데이터가 사라졌다 :

나는 다음 DataSource.groovy에의 관련 부분을 변경했습니다. 다른 구성이 누락 되었습니까?

BootStrap.groovy에서 샘플 데이터가 있거나없는 경우 모두 시도해 보았습니다 (차이가있는 경우).

+0

... 어떤 Grails 버전을 사용하고 있습니까? – vector

+0

@vector 고마워, 나는 'mem'키워드를 제거했다. 모두 일하고있어. – sim

+0

... 내가 게시 한 답변은 다음과 같습니다 :-) – vector

답변

11

... url 문자열의 'mem'부분을 삭제하십시오. jdbc : hsqldb : devDB 지금 바로 메모리 모드에서 db를 실행하므로 데이터가 손실됩니다. 임베디드 모드에서 db를 실행하면 필요한 것을 수행해야합니다.

+0

db-create update는 데이터를 삭제하지 않습니다. 내가 만들었고 mem을 제거한 후에 데이터를 삭제했지만 mem 제거와 함께 db-create 업데이트가이 문제를 해결한다는 것을 깨달았습니다. – cyan

1

메모리 내 데이터베이스를 사용 중이므로 서버가 다시 시작될 때까지 데이터가 살아남을 방법이 없습니다.

development { 
    dataSource { 
     dbCreate = "validate" 

     // Put the MySQL JDBC JAR on the classpath of your Grails app 
     driverClassName = "com.mysql.jdbc.Driver" 

     // Change these property values as needed 
     url = "jdbc:mysql://localhost/yourDB" 
     username = "yourUser" 
     password = "yourPassword" 
    } 
} 
+0

... '적절한'이라고 말하면 PostgreSQL을 의미합니까? – vector

1

: 당신은 당신이 DataSource.groovy의 설정을 변경해야합니다 데이터베이스로 MySQL을 선택했다 가정 예를 들어 dbCreate = 'validate'

를 설정, 지속적인 데이터베이스 (MySQL은, 포스트 그레스 등)로 전환 귀하의 URL이 메모리 내 데이터베이스를 사용하도록 구성되었습니다. 그건 당신의 URL 문자열에있는 "mem"이 의미하는 것입니다.

w/dbCreate = "create-drop"조합에서 BootStrap.groovy를 사용하는 작은 프로젝트에서 특히 편리합니다.

BootStrap.groovy를 사용하여 w/out을 유지하려면 URL을 파일이나 관계형 데이터베이스를 가리 키도록 변경할 수 있습니다. grails 2.0 w/an 메모리를 사용하고 있습니다.

URL =;

여기 MySQL을 사용하는 예이다 "JDBC : H2 dB/devDb auto_server = true"로 (사용 가능한 MySQL을위한 JDBC 드라이버가 가정) :

URL을 = "JDBC : mysql을 : // localhost를 : 8080/foo는 autoreconnect = "

예/파일 w :

URL ="진정한 JDBC : HSQLDB : 파일 : PRODDB,이 도움이

희망 "= 종료 사실.

관련 문제