2011-10-10 18 views
6

私のDBのデータを保存していない、と私はデータは、開発環境でのサーバーの再起動間で保持しようとしています。Grailsは、私は小さなGrailsアプリケーションを構築してい

私は、次のDataSource.groovyの関連部分を変更:

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

私は、サーバーを再起動するたびに、すべてのデータが消えてしまいました。別の設定がありませんか?

(それはどんな違いがあれば)私はBootStrap.groovyでのサンプルデータととなしの両方を試してみました。

+0

... Grailsのどのバージョンをお使いですか? – vector

+0

@vectorありがとう、私は 'mem'キーワードを削除しました。すべて今働いている。 – sim

+0

...私が投稿したので、答えは:-) – vector

答えて

11

...あなたのURL文字列の「MEM」部分を落としてみます。jdbc:HSQLDB:devDB今あなたは、したがって、メモリモードでのデータの損失をデシベルを実行しています。組み込みモードでdbを実行すると、必要な処理が実行されます。

+0

db-create updateはデータを削除しないことに注意してください。私は作成していたmemを削除した後にデータを削除していましたが、memを削除してdb-create updateを実行してこの問題を解決しました – 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

:永続的なデータベース(などのMySQL、Postgresの、)に切り替え、その後、あなたがDataSource.groovyの設定を変更する必要がありますあなたのデータベースとしてMySQLを選択したと仮定すると、例えばdbCreate = 'validate'

を設定あなたのURLはインメモリデータベースを使用するように設定されています。それはあなたのURL文字列の "mem"が参照するものです。

私は特に/のdbCreate =「作成・ドロップを」Wの組み合わせでBootStrap.groovyを使用するための小さなプロジェクト/ wが、それが簡単にわかります。

あなたはワット/ BootStrap.groovyを使用して永続化したい場合は、しかし、ファイルまたはリレーショナルデータベースを指すようにURLを変更することができます。私はgrails 2.0 w/anをメモリdbで使用しています。

URL = "はjdbc:H2:DB/devDb; auto_server = true" を

はここ(あなたが利用できるMySQL用のJDBCドライバを持っていると仮定して)MySQLを使用しての例です:

URL =「JDBC:mysqlの:// localhostを:8080/fooの自動再= true」を

例/ファイルのw:

URL = "はjdbc:HSQLDB:ファイル:?PRODDB;シャットダウン= true" を

・ホープ、このことができます。

関連する問題