java - 访问 H2 DB 时未找到表“myTable”错误
问题描述
我在我的 grails 项目中使用 H2 内存数据库。我的应用程序与 H2 数据库一起正常运行。我想使用 groovy 连接 H2 数据库以从数据库中获取数据。
import groovy.sql.Sql
import java.sql.Driver
class psqlh2 {
static void main(String[] args) {
def driver = Class.forName('org.h2.Driver').newInstance() as Driver
def props = new Properties()
props.setProperty("user", "sa")
props.setProperty("password", "")
def conn = driver.connect("jdbc:h2:mem:~/databaseName;DB_CLOSE_DELAY=-1",props)
def sql = new Sql(conn)
def query = "SELECT * FROM company"
try {
sql.eachRow(query) { row ->
println(row)
}
} finally {
sql.close()
conn.close()
}
}
警告:执行失败:SELECT * FROM company 因为:找不到表“COMPANY”;SQL 语句:SELECT * FROM company [42102-199] 线程“main”org.h2.jdbc.JdbcSQLSyntaxErrorException 中的异常:未找到表“COMPANY”;
请帮帮我。
解决方案
将mem替换为文件
def driver = Class.forName('org.h2.Driver').newInstance() as Driver
def props = new Properties()
props.setProperty("user", username)
props.setProperty("password", password)
return driver.connect("jdbc:h2:file:${absolutePath};DB_CLOSE_DELAY=-1;IFEXISTS=true", props)
- 还要确保使用与 h2-server 相同版本的 H2 jar。
推荐阅读
- java - Java 框架/模式来修改值
- java - Kafka Streams - 应用程序 JVM 随机崩溃
- java - Java 泛型类绑定到类型扩展 T
- common-lisp - 运行尝试输出 Javascript 代码的通用 lisp 宏时键入错误。为什么?
- javascript - 需要设置超时需要在 if else 条件中进行以下更改
- gradle - Gradle build - 从下载的档案中解决依赖关系
- firebase - RN Firebase:未触发通知方法;消息方法是
- sql - SQL Server 如果存在重复则忽略行,除非 id 存在
- xml - 如何让每个办公室使用 XSLT 在单独的页面上打印?
- javascript - 我可以在 loopbackjs API 中禁用“包含”过滤器功能吗?