在Clojure项目中将Migratus与SQLite配合使用时未找到合适的驱动程序

unhi4e5o  于 2023-08-06  发布在  SQLite
关注(0)|答案(1)|浏览(80)

我是Clojure的新手,我一直在努力让Migratus使用SQLite数据库。我经历了一些调试,我觉得卡住了!:(
问题是,当我尝试运行迁移时,我得到以下错误:

Execution error (SQLException) at java.sql.DriverManager/getConnection (DriverManager.java:702).
No suitable driver found for jdbc:://127.0.0.1/

字符串
(奇怪的是:这应该是指SQLite文件,而不是本地主机)
使用java.sql.DriverManager,我可以成功地手动建立到SQLite数据库的连接。所以驱动程序似乎设置正确。
这是我的project.clj

(defproject sample-project "0.1.0-SNAPSHOT"
  :description "TODO"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.10.0"]
                 [io.pedestal/pedestal.route "0.6.0"]
                 [io.pedestal/pedestal.service "0.6.0"]
                 [io.pedestal/pedestal.jetty "0.6.0"]
                 [org.clojure/java.jdbc "0.7.12"]
                 [org.xerial/sqlite-jdbc "3.42.0.0"]
                 [migratus/migratus "1.5.1"]
                 [buddy/buddy-hashers "2.0.167"]]
  :source-paths ["src"]
  :repl-options {:init-ns sample-project.core}
  :profiles {:dev {:aliases {"run-dev" ["trampoline" "run" "-m" "simple-api-proxy.werver/run-dev"]}
                   :dependencies [[io.pedestal/pedestal.service-tools "0.6.0"]]}}
  :main sample-project.core)


下面是core.cljrun-migrations函数的配置:

(ns simple-api-proxy.db
  (:require [clojure.java.jdbc :as jdbc]
           [migratus.core :as migratus]))

(def db-spec 
 {:classname "org.sqlite.JDBC"
    :subprotocol "sqlite"
    :subname ":db.sqlite3"}) ; Also tried with 'db.sqlite3' and "jdbc:sqlite:db.sqlite3"

#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
(defn run-migrations "Run migrations" []
  (let [config {:store :database
                :migration-dir "resources/migrations"
                :db db-spec}]
    (migratus/migrate config)))


我错过了什么吗?Migratus和SQLite之间是否存在不兼容性?

pprl5pva

pprl5pva1#

afaik migratus db规范声明使用不同的属性名称:
文档显示了如下内容

:migratus {:store :database
           :migration-dir "migrations"
           :db {:dbtype "sqlite"
                :dbname "db.sqlite3"}}

字符串
因此,您可能需要更新迁移规范。

相关问题