我是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.clj
中run-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之间是否存在不兼容性?
1条答案
按热度按时间pprl5pva1#
afaik
migratus
db规范声明使用不同的属性名称:文档显示了如下内容
字符串
因此,您可能需要更新迁移规范。