如何使用Grails从sqldeveloper读取类似表的数据?

如何使用Grails从sqldeveloper读取类似表的数据?,grails,oracle-sqldeveloper,Grails,Oracle Sqldeveloper,我对Grails有相当多的了解,但我找不到一种方法来从使用Grails的sql开发人员那里读取表中的数据。如何实现这一点?默认情况下,当您使用运行应用程序时,数据库位于内存中(url类似于“jdbc:h2:mem:devDb”),因此无法从JVM外部连接到它。如果将其更改为“真实”数据库,则可以从Grails和另一个客户端连接到它 要使用H2执行此操作,一个选项是启动独立服务器。这需要找到H2 jar——它将位于$HOME/.m2/存储库或$HOME/.grails/ivy缓存下。例如,在我的机

我对Grails有相当多的了解,但我找不到一种方法来从使用Grails的sql开发人员那里读取表中的数据。如何实现这一点?

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

要使用H2执行此操作,一个选项是启动独立服务器。这需要找到H2 jar——它将位于$HOME/.m2/存储库或$HOME/.grails/ivy缓存下。例如,在我的机器上,在端口9092(默认值)上启动的命令是

然后将
grailsapp/conf/DataSource
中的url更改为

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并显式启动数据库服务器

有关更多配置信息,请参阅

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


但是,说到这里,已经有一个方便的数据库客户端正在运行,您可以访问它。当您使用
runapp
启动Grails时,您可以连接到
http://localhost:8080/appname/dbconsole
在web浏览器中,访问您的表信息,执行SQL查询等。这是H2功能,但它适用于您使用的任何数据库,因为它适用于JDBC,因此您可以将其用于MySQL或其他任何数据库。有关这方面的更多信息,请参阅。

谢谢!这帮了大忙。
url = 'jdbc:h2:./dbname;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9092'