首页 > 解决方案 > 访问 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”;

请帮帮我。

标签: javamysqlgroovyh2

解决方案


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。

推荐阅读