无法使用joplin迁移Cassandra
我正在尝试使用为我的Cassandra数据库运行迁移。 但是,当我运行lein migrate dev时,会出现以下异常:无法使用joplin迁移Cassandra,cassandra,clojure,migration,Cassandra,Clojure,Migration,我正在尝试使用为我的Cassandra数据库运行迁移。 但是,当我运行lein migrate dev时,会出现以下异常: Migrating #joplin.cassandra.database.CassandraDatabase{:hosts [127.0.0.1:9042], :keyspace test} Exception in thread "main" java.lang.IllegalArgumentException: No matching ctor found for
Migrating #joplin.cassandra.database.CassandraDatabase{:hosts [127.0.0.1:9042], :keyspace test}
Exception in thread "main" java.lang.IllegalArgumentException: No matching ctor found for class com.datastax.driver.core.policies.DCAwareRoundRobinPolicy, compiling:(clojurewerkz/cassaforte/policies.clj:38:3)
我认为问题可能在于我的迁移,但我不确定我做错了什么
project.clj
(defproject app "0.1.0"
:dependencies [[org.clojure/clojure "1.8.0"]
[clojurewerkz/cassaforte "3.0.0-alpha1"]
[joplin.core "0.3.10"]
[joplin.cassandra "0.3.10"]
[cc.qbits/alia "4.2.3"]
[cc.qbits/hayt "4.0.2"]
]
:main app.cli.core
:source-paths ["src"]
:resource-paths ["resources"]
:test-paths ["test"]
:profiles {:uberjar {:aot :all}}
:aliases {"migrate" ["run" "-m" "joplin.alias/migrate" "config.edn"]
"seed" ["run" "-m" "joplin.alias/seed" "config.edn"]
"rollback" ["run" "-m" "joplin.alias/rollback" "config.edn"]
"reset" ["run" "-m" "joplin.alias/reset" "config.edn"]
"pending" ["run" "-m" "joplin.alias/pending" "config.edn"]
"create" ["run" "-m" "joplin.alias/create" "config.edn"]}
)
config.edn
{:migrators {:cass-mig "resources/migrators"}
:seeds {:cass-seed "seeds.cass/run"}
:databases {:cass-dev {:type :cass, :hosts ["127.0.0.1:9042"],
:keyspace "test"}}
:environments {:dev [{:db :cass-dev, :migrator :cass-mig, :seed :cass-seed}]}}
迁移者
(ns migrators.20180717174605-test
(:use [joplin.cassandra.database])
(:require [clojurewerkz.cassaforte.client :as client]
[clojurewerkz.cassaforte.cql :refer :all]))
(defn up [db]
(let [conn (client/connect (:hosts db))]
(create-keyspace conn "test")))
(defn down [db]
(let [conn (client/connect (:hosts db))]
(drop-keyspace conn "test")))
问题在于cc.qbits/alia依赖于Cassandra Java驱动程序3.5.0,而版本为3.0.0-alpha1的cassaforte依赖于旧版本2.1.6。看起来alia的依赖项隐藏了cassafortes,在drivers 3.x中找不到DCAware策略的构造函数,使用的是构造函数而不是直接构造函数
您可以从存储库安装cassaforte-它是为了与3.x驱动程序一起使用。对于joplin 0.3.9+请参阅更改文档,使用alia&hayt代替cassaforte。您能检查您的类路径吗?是否包括datastax java驱动程序?