首次查询数据库数据库

时间:2016-01-06 09:31:45

标签: datomic

我可以访问repl,我可以连接uri。如何连接,查看存在哪些实体和属性,然后查看其值,然后向下钻取等等?我只是使用我没有注册的免费版本。

到目前为止,这是我尝试过的:

C:\programs\datomic-free-0.9.5327>.\bin\repl
Clojure 1.6.0
user=> (use '[datomic.api :only [q db] :as d])
nil
user=> (def conn (d/connect "datomic:dev://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/unsupported-protocol Unsupported protocol :dev  datomic.error/arg (error.clj:57)
user=> 

user=> (def conn (d/connect "datomic://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic://localhost:4334/somedb  datomic.error/arg (error.clj:57)

user=> (def conn (d/connect "datomic:mem//somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic:mem//somedb  datomic.error/arg (error.clj:57)

使用MySql或Oracle数据库,操作员能够(给定正确的密码)列出所有数据库,连接到其中一个数据库,查看其表,然后通过查询其中一个来开始滚动。

即使这个数据库(' somedb')在内存中也是如此,我仍然希望它存在,因为有一个交易者在运行。然而,交易者有点怀疑,因为这就是它的样子:

C:\programs\datomic-free-0.9.5327>.\bin\transactor .\config\samples\free-transactor-template.properties
Starting datomic:free://localhost:4334/<DB-NAME>, storing data in: data ...
System started datomic:free://localhost:4334/<DB-NAME>, storing data in: data

我对查询应该启动并运行的数据库感到困惑。

1 个答案:

答案 0 :(得分:3)

我可以澄清这些错误:

user=> (use '[datomic.api :only [q db] :as d])
nil
user=> (def conn (d/connect "datomic:dev://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/unsupported-protocol Unsupported protocol :dev  datomic.error/arg (error.clj:57)

这里的URI格式正确,但错误表明您正在尝试访问专属存储(dev)而不是free(free和mem)允许的存储。请注意,您可以使用免费级别的入门许可证访问专业存储格式(即您不需要付费许可证即可使用它)。

user=> (def conn (d/connect "datomic://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic://localhost:4334/somedb  datomic.error/arg (error.clj:57)

此处您根本没有指定存储协议,即第一次调用中dev的位置。这是必需的。

user=> (def conn (d/connect "datomic:mem//somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic:mem//somedb  datomic.error/arg (error.clj:57)

:之后,您错过了mem。对于上述错误,connect的API文档涵盖了正确的URI构造。

您可以列出get-database-names的数据库,记录here

要启动并运行查询,您可能会使用console获得更好的初次体验,这是一个处理此数据库自动列表,连接到一个数据库,查询等的Web应用程序/ GUI。