Clojure项目使用Migratus与SQLite时出现找不到合适驱动问题
解决Migratus操作SQLite的连接错误
你的核心问题是db-spec配置错误,导致Migratus生成了无效的JDBC连接URL,进而抛出找不到驱动的错误。以下是具体修复方案:
1. 修正db-spec配置
你当前的subname值:db.sqlite3多了前缀冒号,错误的格式让Migratus误以为要连接TCP类型的数据库(如MySQL),才会出现指向127.0.0.1的错误。
正确配置方式二选一:
方式一:拆分式map配置(适配clojure.java.jdbc和Migratus)
(def db-spec {:classname "org.sqlite.JDBC" :subprotocol "sqlite" :subname "db.sqlite3"}) ; 直接写文件名,会在项目根目录生成/读取数据库文件
方式二:完整JDBC URL配置
(def db-spec {:url "jdbc:sqlite:db.sqlite3"}) ; 直接使用标准SQLite JDBC URL
2. 兼容性说明
Migratus 1.5.1与SQLite完全兼容,不存在兼容性问题,只要配置正确即可正常运行迁移。
3. 额外检查点
- 确认
resources/migrations目录已创建,且包含符合Migratus命名规则的迁移文件(例如001-create-users.up.sql和001-create-users.down.sql) - 确保项目根目录有读写权限,SQLite需要创建/写入
db.sqlite3文件
内容的提问来源于stack exchange,提问作者Original BBQ Sauce
相关产品推荐
相关产品推荐

