My 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&中的所有可用数据库。表"标签
"测试连接"按钮表示成功,但从红色圆圈可以看到,没有找到表格。我似乎正确地设置了与h2服务器的连接,但没有建立与模式本身的连接。
顺便说一句,我尝试在应用程序运行后设置此连接,因此我确信架构/表确实存在。
答案 0 :(得分:62)
您的配置适用于h2:mem
数据库。内存数据库在连接它们时没有表格,任何&关闭所有连接后,所有表都将丢失。此外,内存数据库中的(命名)
有时需要与同一内存数据库建立多个连接。在这种情况下,数据库URL必须包含名称。示例:jdbc:h2:mem:db1。 使用此URL访问同一数据库仅适用于同一虚拟机和类加载器环境。(强调已添加)
这意味着IDEA将在其JVM(和类加载器)空间中创建唯一的devDb
,并且您的应用程序将在其JVM(和类加载器)空间中创建唯一的devDb
。您无法从外部JVM进程连接到内存数据库。
如果要同时将应用程序和IntelliJ IDEA(或任何其他数据库工具)连接到H2数据库,则需要
Mixed Mode
允许IntelliJ IDEA(和/或其他数据库工具)连接到它有关详细信息,请参阅http://www.h2database.com/html/features.html#connection_modes。
答案 1 :(得分:17)
如果你碰巧使用Spring Boot,那么本文就如何设置IntelliJ数据库客户端连接到H2内存数据库有很好的说明:https://techdev.io/en/developer-blog/querying-the-embedded-h2-database-of-a-spring-boot-application
基本上,你使用tcp服务器包装内存数据库,然后你有一个访问点通过远程访问与sql客户端连接。
答案 2 :(得分:2)
在开发过程中,您可以使用grails h2 dbconsole
答案 3 :(得分:-1)
尝试打开http://localhost:8080/dbconsole并填写您的jdbc网址