我对 Grails 有相当多的了解,但我找不到如何从使用 Grails 的 sql 开发人员的表中读取数据的方法。我怎样才能做到这一点?
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
url = 'jdbc:h2:./dbname;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9092'
它将启动一个内存数据库,但在端口 9092 上有一个 TCP 套接字,您可以从外部连接到该套接字。这避免了必须找到 jar 并显式启动数据库服务器。
有关更多配置信息,请参阅http://h2database.com/html/main.html。
您还可以使用不同的服务器,例如 MySQL/PostgreSQL/Oracle/etc 服务器。
但是说了这么多,有一个方便的数据库客户端已经在运行,您可以访问它。当您启动 Grails 时,run-app
您可以http://localhost:8080/appname/dbconsole
在 Web 浏览器中连接并访问您的表信息、执行 SQL 查询等。这是一个 H2 功能,但它适用于您使用的任何数据库,因为它适用于 JDBC,因此您可以使用它使用 MySQL 或其他。有关这方面的更多信息,请参阅http://grails.org/doc/latest/guide/conf.html#databaseConsole。