我对Grails有相当多的了解,但是我找不到如何从使用Grails的sql开发人员的表中读取数据的方法。我怎么能这样做?
答案 0 :(得分: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 = '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时,您可以在Web浏览器中连接到http://localhost:8080/appname/dbconsole
并访问您的表信息,执行SQL查询等。这是H2功能,但它适用于您使用的任何数据库它适用于JDBC,因此您可以将它与MySQL或其他任何东西一起使用。有关详细信息,请参阅http://grails.org/doc/latest/guide/conf.html#databaseConsole。