作者:捕鱼达人2502933245 | 来源:互联网 | 2023-05-18 19:17
我的Grails应用程序在开发模式下使用h2数据库(Grails应用程序的默认行为).数据库连接设置DataSource.groovy
是
dataSource {
pooled = true
jmxExport = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
}
我正在尝试使用IntelliJ IDEA的数据库客户端工具为此数据库建立连接.我开始创建这样的连接
然后在下面的对话框中输入JDBC URL
并在"Schemas&Tables"选项卡上选择所有可用的数据库.
"测试连接"按钮表示成功,但从红色圆圈可以看到,没有找到表格.好像我已正确设置到h2服务器的连接,但不是架构本身.
顺便说一句,我尝试在应用程序运行后设置此连接,因此我确信架构/表确实存在.
1> Javaru..:
您的配置适用于h2:mem
数据库.内存数据库在连接它们时没有表,当所有连接都关闭时,任何和所有表都会丢失.此外,内存数据库中的(命名)对于打开它的JVM进程是唯一的.从H2文档:
有时需要与同一内存数据库的多个连接.在这种情况下,数据库URL必须包含名称.示例:jdbc:h2:mem:db1.使用此URL访问同一数据库仅适用于同一虚拟机和类装入器环境.(重点补充)
这意味着IDEA将devDb
在其JVM(和类加载器)空间中创建一个唯一的devDb
,并且您的应用程序将在其JVM(和类加载器)空间中创建一个唯一的.您无法从外部JVM进程连接到内存数据库.
如果要同时将应用程序和IntelliJ IDEA(或任何其他数据库工具)连接到H2数据库,则需要
在您的应用程序中使用嵌入式数据库(写入文件)并使用它Mixed Mode
来允许IntelliJ IDEA(和/或其他数据库工具)连接到它
使用服务器模式数据库
有关更多信息,请参见http://www.h2database.com/html/features.html#connection_modes.
对于那些想知道如何启用混合模式的人:jdbc:h2:〜/ test; AUTO_SERVER = TRUE(在app config和idea db manager设置中都有)
2> Jason White..:
本文非常好地介绍了如何设置IntelliJ数据库客户端以连接到H2内存数据库(如果您正好使用Spring Boot):https://techdev.io/en/developer-blog/querying-所述包埋-H2-数据库对的一弹簧引导的应用程序
基本上,您使用tcp服务器包装内存数据库,然后您有一个访问点通过远程访问连接到SQL客户端.
https://techdev.io/en/developer-blog/querying-the-embedded-h2-database-of-a-spring-boot-application