使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是啥?
Posted
技术标签:
【中文标题】使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是啥?【英文标题】:When using clojure's korma sqlite3 helpers, what's the default path for the sqlite3 database?使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是什么? 【发布时间】:2013-12-17 17:19:00 【问题描述】:使用 korma.db 时,defdb 可以使用 sqlite3 助手来建立与 sqlite3 数据库的连接。但是,我尝试将数据库放在项目目录的根目录、project.clj 旁边以及资源目录中,但是当我尝试使用 db 时,我得到:
使用 SQL 执行查询失败: 选择“示例”。* FROM“示例”:: [] SQL异常: 消息:[SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的表:示例)
不用说我的 sqlite 数据库包含一个示例表。尝试执行此操作时,我在根项目目录中获得了一个零字节的 sqlite.db 文件。
顺便说一句,我是从项目中的 lein repl 执行此操作的。
编辑:失败时我会这样做:
(use 'korma.db)
(defdb db (sqlite3 :db "filename.db"))
(use 'korma.core)
(defentity examples)
(select examples)
【问题讨论】:
请提供您用于连接数据库并发送查询的代码 我会把它添加到问题中。 没有得到相同的结果。我已经尝试了您给出的语句,并在根目录中创建了一个“filename.db”,正如我所料。我在该数据库中添加了一个“示例”表,然后它运行良好。你还有这个问题吗? 【参考方案1】:以防万一有人想知道或遇到这个......
使用版本[korma "0.4.2"]
和[org.xerial/sqlite-jdbc "3.7.15-M1"]
在我的project.clj
:
我的项目结构如下:
root/project.clj
root/db/dev.sqlite3
root/src/...
这就是我使用 korma 访问数据库的方式:
(use 'korma.db)
(defdb mydb :classname "org.sqlite.JDBC"
:subprotocol "sqlite"
:subname "db/dev.sqlite3")
基本上,使用子名,我可以在 lein 项目的根目录中进行搜索。我根据上面的目录结构在子名称中添加了db/
。
【讨论】:
以上是关于使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 korma 在 postgresql 上插入 clj-time 日期时间对象
Clojure:将 ragtime 与 sqlite3 一起使用
使用clojure.java.jdbc在Clojure中使用外键约束
如何使用 next.jdbc 将 SQLite 中的 bool 列读入 bool Clojure 值? SQLite 将布尔值存储为 0/1