gpt4 book ai didi

jdbc - Clojure:将 ragtime 与 sqlite3 结合使用

转载 作者:行者123 更新时间:2023-12-03 00:37:16 24 4
gpt4 key购买 nike

我想使用ragtime管理 SQLite 数据库上的迁移。继instructions here ,我在 REPL 中尝试了以下操作:

(require '[ragtime.jdbc :as jdbc]
'[ragtime.repl :as repl])

(def config
{:datastore (jdbc/sql-database {:connection-uri "jdbc:sqlite:resources/db.sqlite3"})
:migrations (jdbc/load-resources "migrations")})

(repl/migrate config)

我得到的只是以下错误:

ClassCastException clojure.lang.PersistentVector cannot be cast to clojure.lang.Named  clojure.core/name (core.clj:1546)

数据库文件存在于resources/db.sqlite3中。我尝试过跟踪异常(如果需要,我可以添加堆栈跟踪),但它似乎发生在 clojure.java.jdbc 深处。

由于我是 JVM 和 JDBC 的新手,我也不确定是否正确指定了 :connection-uri;我尝试了几种变体,但似乎无法使其发挥作用。

任何帮助将不胜感激!

<小时/>

编辑:堆栈跟踪:

java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to clojure.lang.Named
at clojure.core$name.invokeStatic (core.clj:1546)
clojure.core$name.invoke (core.clj:1540)
clojure.java.jdbc$as_sql_name.invokeStatic (jdbc.clj:67)
clojure.java.jdbc$as_sql_name.invoke (jdbc.clj:56)
clojure.java.jdbc$create_table_ddl$spec_to_string__2511.invoke (jdbc.clj:1052)
clojure.core$map$fn__4785.invoke (core.clj:2646)
clojure.lang.LazySeq.sval (LazySeq.java:40)
clojure.lang.LazySeq.seq (LazySeq.java:49)
clojure.lang.LazySeq.first (LazySeq.java:71)
clojure.lang.RT.first (RT.java:667)
clojure.core$first__4339.invokeStatic (core.clj:55)
clojure.string$join.invokeStatic (string.clj:180)
clojure.string$join.invoke (string.clj:180)
clojure.java.jdbc$create_table_ddl.invokeStatic (jdbc.clj:1056)
clojure.java.jdbc$create_table_ddl.doInvoke (jdbc.clj:1041)
clojure.lang.RestFn.invoke (RestFn.java:423)
ragtime.jdbc$migrations_table_ddl.invokeStatic (jdbc.clj:16)
ragtime.jdbc$migrations_table_ddl.invoke (jdbc.clj:15)
ragtime.jdbc$ensure_migrations_table_exists.invokeStatic (jdbc.clj:22)
ragtime.jdbc$ensure_migrations_table_exists.invoke (jdbc.clj:20)
ragtime.jdbc.SqlDatabase.applied_migration_ids (jdbc.clj:42)
ragtime.core$migrate_all.invokeStatic (core.clj:43)
ragtime.core$migrate_all.invoke (core.clj:32)
ragtime.repl$migrate.invokeStatic (repl.clj:49)
ragtime.repl$migrate.invoke (repl.clj:34)
thulium.core$eval8407.invokeStatic (form-init2686611279014890656.clj:1)
(the rest is REPL and compiler calls)

以及两个迁移文件,resources/migrations/001-initial.up.sql:

CREATE TABLE tests (
id INTEGER PRIMARY KEY AUTOINCREMENT
);

resources/migrations/001-initial.down.sql:

DROP TABLE tests;

最佳答案

尝试一下这些版本:

[org.clojure/java.jdbc "0.6.1"]
[org.xerial/sqlite-jdbc "3.8.7"]

关于jdbc - Clojure:将 ragtime 与 sqlite3 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37345289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com