我的 Grails 应用程序在开发模式下使用 h2 数据库(Grails 应用程序的默认行为)。数据库连接设置DataSource.groovy
are
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
并在“架构和表”选项卡上选择所有可用的数据库。
“测试连接”按钮表示成功,但是从红圈中可以看到,没有找到任何表。看起来我已经正确设置了与 h2 服务器的连接,但没有正确设置模式本身。
顺便说一句,我尝试在应用程序运行后设置此连接,因此我确信架构/表确实存在。
您的配置适用于h2:mem
数据库。内存数据库在连接到它们时没有表,并且当所有连接关闭时,所有表都会丢失。此外,内存数据库中的(命名的)是JVM 进程特有的打开它。来自H2 文档 http://www.h2database.com/html/features.html#in_memory_databases:
有时需要与同一个内存数据库的多个连接。在这种情况下,数据库 URL 必须包含名称。示例:jdbc:h2:mem:db1。使用此 URL 访问同一数据库只能在同一虚拟机和类加载器环境中进行。(强调已添加)
这意味着 IDEA 将创建一个独特的devDb
在其 JVM(和类加载器)空间中,您的应用程序将创建一个独特的devDb
在它的 JVM(和类加载器)空间中。您无法从外部 JVM 进程连接到内存数据库。
如果您想同时将应用程序和 IntelliJ IDEA(或任何其他数据库工具)连接到 H2 数据库,您将需要
- 在您的应用程序中使用嵌入式数据库(写入文件)并使用
Mixed Mode
允许 IntelliJ IDEA(和/或其他数据库工具)连接到它
- 使用服务器模式数据库
See http://www.h2database.com/html/features.html#connection_modes http://www.h2database.com/html/features.html#connection_modes了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)