使用korma.db时,defdb可以使用sqlite3助手来建立与sqlite3数据库的连接。然而,我已经尝试将数据库放在项目目录的根目录、project.clj和resources目录上,但当我尝试使用数据库时,我会得到:
无法使用SQL执行查询:选择"examples"。*FROM"examples"::[]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)
万一有人想知道或遇到这个。。。
使用版本[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"})
基本上,使用subname,我能够在lein项目的根目录中进行搜索。我在上面的目录结构的子名称中添加了db/
。