Java、Spark、Sql2o、H2 : Could not acquire a connection from DataSource - IO Exception

标签 java apache-spark h2 sql2o

我想使用 Java Maven、Spark 和 H2 数据库以及 Sql2o 库创建一个 API。

这是完整的错误消息:

Exceptionorg.sql2o.Sql2oException: Could not acquire a connection from DataSource - IO Exception: "java.io.IOException: The filename, directory name, or volume label syntax is incorrect"; "C:\Users\Claudiu/reviews.db:INIT=RUNSCRIPT from 'classpath:db/init.sql.mv.db" [90031-191] [qtp1133151800-16] ERROR spark.webserver.MatcherFilter - ro.sparkmaven.exc.DaoException: Problem adding Course at ro.sparkmaven.dao.Sql2oCourseDao.add(Sql2oCourseDao.java:28) at ro.sparkmaven.App.lambda$0(App.java:37) at ro.sparkmaven.App$$Lambda$1/1607460018.handle(Unknown Source)

这是主类:

public class App 
{
    public static void main(String[] args) {        
        String connectionString= "jdbc:h2:~/reviews.db:INIT=RUNSCRIPT from 'classpath:db/init.sql";     
        Sql2o sql2o = new Sql2o(connectionString, "", "");
         CourseDao courseDao = new Sql2oCourseDao(sql2o);
         Gson gson = new Gson();

        post("/courses", "application/json", (req, res) -> {
            Course course = gson.fromJson(req.body(), Course.class);
            courseDao.add(course);
            res.status(201);
            res.type("application/json");
            return null;
        } , gson::toJson);

        get("/courses", "application/json", (req, res) -> courseDao.findAll(), gson::toJson);

        get("/courses/:id", "application/json", (req, res) -> {
            int id;
            id = Integer.parseInt(req.params("id"));
            //TO DO: What if this not found
            Course course = courseDao.findById(id);

            return null;
        });

        after((req,res)->{
            res.type("application/json");
        });
    }
}

这是 init.sql:

CREATE TABLE IF NOT EXISTS courses (
   id int PRIMARY KEY auto_increment,
   name VARCHAR,
   url VARCHAR
);

CREATE TABLE IF NOT EXISTS reviews (
   id INTEGER PRIMARY KEY auto_increment,
   course_id INTEGER,
   rating INTEGER,
   comment VARCHAR,
   FOREIGN KEY(course_id) REFERENCES public.courses(id)
);

提前致谢!

最佳答案

正如异常消息所示,URL 格式不正确。在 INIT 之前使用分号而不是冒号。最后的 ' 也丢失了。尝试:

String connectionString = 
  "jdbc:h2:~/reviews.db;INIT=RUNSCRIPT from 'classpath:db/init.sql'";

关于Java、Spark、Sql2o、H2 : Could not acquire a connection from DataSource - IO Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37819704/

相关文章:

java链异常

apache-spark - 一旦写入最终完成,如何处理 HDFS 目录中的新文件?

scala - S3 目录上的 Spark Streaming

ssl - H2 - 服务器模式下的拆分文件选项

java - H2 数据库中的存储过程

java - 什么是实现 REstful API 的最佳轻量级/高性能嵌入式 Web 服务器

c# - 遍历二叉树

java - 将 Java 字节码存储在数据库中

python - 将 PySpark RDD 作为新列添加到 pyspark.sql.dataframe

java - H2 数据库 : How to have lowercase for tablename?