2013-07-10 56 views

回答

1

默认情况下,当您使用run-app时,数据库在内存中(url类似于“jdbc:h2:mem:devDb”),因此无法从JVM外部连接到该数据库。如果您将其更改为“真实”数据库,则可以从Grails和其他客户端连接到它。

要做到这一点与H2,一个选项是启动一个独立的服务器。这需要您找到H2 jar - 它将在$ HOME/.m2/repository或$ HOME/.grails/ivy-cache下。例如我的机器上的命令启动在端口9092(默认)是

java -cp /home/burt/.m2/repository/com/h2database/h2/1.3.170/h2-1.3.170.jar org.h2.tools.Server -tcp -tcpPort 9092 

然后在grails-app/conf/DataSource的URL更改为

url = 'jdbc:h2:tcp://localhost:9092/dbname' 

其中“DBNAME”是任意的 - H2支持创建多个数据库每台服务器。然后,您可以启动Grails并连接到该服务器,也可以从另一个客户端连接。

更简单的方法是使用H2的自动服务器模式,例如,这个网址

url = 'jdbc:h2:./dbname;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9092' 

它将启动一个内存数据库,但在端口9092 TCP套接字,你可以连接到外部。这避免了必须找到jar并显式启动数据库服务器。

有关更多配置信息,请参阅http://h2database.com/html/main.html

您还可以使用不同的服务器,例如MySQL/PostgreSQL/Oracle/etc服务器。

但说了这么多,有一个方便的数据库客户端已经运行,您可以访问。当你用run-app启动Grails时,你可以在网络浏览器中连接到http://localhost:8080/appname/dbconsole,并访问你的表信息,执行SQL查询等等。这是一个H2特性,但它可以用于你使用的任何数据库,因为它可以与JDBC一起工作,所以你可以使用它与MySQL或其他。有关详细信息,请参阅http://grails.org/doc/latest/guide/conf.html#databaseConsole

+0

谢谢!这帮了很多。 –

相关问题