Open ashton opened 6 years ago
Try changing your load-config
function to:
(defn load-config []
{:datastore (jdbc/sql-database {:connection-uri "jdbc:postgresql://postgres@localhost/investtrack"})
:migrations (jdbc/load-resources "migrations")})
changed to:
(defn load-config []
{:datastore (jdbc/sql-database {:connection-uri "jdbc:postgresql://localhost/investtrack?user=postgres"})
:migrations (jdbc/load-resources "migrations")})
because the URI with user@host wasn't working, but I got the same error:
Exception in thread "main" java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to clojure.lang.Named, compiling:(/private/var/folders/r7/0y3zp5r513v7_j7g1qshvyg00000gn/T/form-init8552361286008879301.clj:1:125) at clojure.lang.Compiler.load(Compiler.java:7391) at clojure.lang.Compiler.loadFile(Compiler.java:7317) at clojure.main$load_script.invokeStatic(main.clj:275) at clojure.main$init_opt.invokeStatic(main.clj:277) at clojure.main$init_opt.invoke(main.clj:277) at clojure.main$initialize.invokeStatic(main.clj:308) at clojure.main$null_opt.invokeStatic(main.clj:342) at clojure.main$null_opt.invoke(main.clj:339) at clojure.main$main.invokeStatic(main.clj:421) at clojure.main$main.doInvoke(main.clj:384) at clojure.lang.RestFn.invoke(RestFn.java:421) at clojure.lang.Var.invoke(Var.java:383) at clojure.lang.AFn.applyToHelper(AFn.java:156) at clojure.lang.Var.applyTo(Var.java:700) at clojure.main.main(main.java:37) Caused by: java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to clojure.lang.Named at clojure.core$name.invokeStatic(core.clj:1546) at clojure.core$name.invoke(core.clj:1540) at clojure.java.jdbc$as_sql_name.invokeStatic(jdbc.clj:67) at clojure.java.jdbc$as_sql_name.invoke(jdbc.clj:56) at clojure.java.jdbc$create_table_ddl$spec_to_string449.invoke(jdbc.clj:1052) at clojure.core$map$fn4785.invoke(core.clj:2646) at clojure.lang.LazySeq.sval(LazySeq.java:40) at clojure.lang.LazySeq.seq(LazySeq.java:49) at clojure.lang.LazySeq.first(LazySeq.java:71) at clojure.lang.RT.first(RT.java:667) at clojure.core$first__4339.invokeStatic(core.clj:55) at clojure.string$join.invokeStatic(string.clj:180) at clojure.string$join.invoke(string.clj:180) at clojure.java.jdbc$create_table_ddl.invokeStatic(jdbc.clj:1056) at clojure.java.jdbc$create_table_ddl.doInvoke(jdbc.clj:1041) at clojure.lang.RestFn.invoke(RestFn.java:423) at ragtime.jdbc$migrations_table_ddl.invokeStatic(jdbc.clj:15) at ragtime.jdbc$migrations_table_ddl.invoke(jdbc.clj:14) at ragtime.jdbc$ensure_migrations_table_exists.invokeStatic(jdbc.clj:43) at ragtime.jdbc$ensure_migrations_table_exists.invoke(jdbc.clj:41) at ragtime.jdbc.SqlDatabase.applied_migration_ids(jdbc.clj:62) at ragtime.core$migrate_all.invokeStatic(core.clj:57) at ragtime.core$migrate_all.invoke(core.clj:33) at ragtime.repl$migrate.invokeStatic(repl.clj:32) at ragtime.repl$migrate.invoke(repl.clj:17) at investtrack.scripts.migration$migrate.invokeStatic(migration.clj:10) at investtrack.scripts.migration$migrate.invoke(migration.clj:9) at clojure.lang.Var.invoke(Var.java:375) at user$eval5.invokeStatic(form-init8552361286008879301.clj:1) at user$eval5.invoke(form-init8552361286008879301.clj:1) at clojure.lang.Compiler.eval(Compiler.java:6927) at clojure.lang.Compiler.eval(Compiler.java:6917) at clojure.lang.Compiler.load(Compiler.java:7379) ... 14 more
Could you run lein deps :tree
on your repository? Perhaps there's a dependency issue.
If there's no problems with the dependencies, can you create a small project that replicates this error?
Here is the dependency tree:
Possibly confusing dependencies found:
[korma "0.4.0"] -> [org.clojure/java.jdbc "0.3.5"]
overrides
[ragtime "0.7.2"] -> [ragtime/jdbc "0.7.2"] -> [org.clojure/java.jdbc "0.5.8"]
Consider using these exclusions:
[ragtime "0.7.2" :exclusions [org.clojure/java.jdbc]]
[cider/cider-nrepl "0.14.0"]
[org.tcrawley/dynapath "0.2.4" :exclusions [[org.clojure/clojure]]]
[clj-time "0.14.0"]
[joda-time "2.9.7"]
[clojure-complete "0.2.4" :exclusions [[org.clojure/clojure]]]
[compojure "1.5.1"]
[clout "2.1.2"]
[instaparse "1.4.0" :exclusions [[org.clojure/clojure]]]
[medley "0.8.2"]
[org.clojure/tools.macro "0.1.5"]
[ring/ring-codec "1.0.1"]
[commons-codec "1.6"]
[ring/ring-core "1.5.0"]
[commons-fileupload "1.3.1"]
[commons-io "2.5"]
[crypto-equality "1.0.0"]
[crypto-random "1.2.0"]
[org.clojure/tools.reader "0.9.1"]
[http-kit "2.1.16"]
[javax.servlet/servlet-api "2.5" :scope "test"]
[korma "0.4.0"]
[c3p0 "0.9.1.2"]
[org.clojure/java.jdbc "0.3.5"]
[org.clojure/clojure "1.8.0"]
[org.clojure/tools.nrepl "0.2.13"]
[org.postgresql/postgresql "9.2-1002-jdbc4"]
[pjstadig/humane-test-output "0.8.3" :scope "test"]
[ragtime "0.7.2"]
[ragtime/core "0.7.2"]
[ragtime/jdbc "0.7.2"]
[resauce "0.1.0"]
[ring/ring-defaults "0.2.1"]
[ring/ring-anti-forgery "1.0.1"]
[hiccup "1.0.5"]
[ring/ring-headers "0.2.0"]
[ring/ring-ssl "0.2.1"]
[ring/ring-json "0.4.0"]
[cheshire "5.5.0"]
[com.fasterxml.jackson.core/jackson-core "2.5.3"]
[com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.5.3"]
[com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.5.3"]
[tigris "0.1.1"]
[ring/ring-mock "0.3.0" :scope "test"]
There's a dependency warning:
Possibly confusing dependencies found:
[korma "0.4.0"] -> [org.clojure/java.jdbc "0.3.5"]
overrides
[ragtime "0.7.2"] -> [ragtime/jdbc "0.7.2"] -> [org.clojure/java.jdbc "0.5.8"]
Korma is forcing an older version of java.jdbc to be used. Try adding in an explicit dependency to your project file:
[org.clojure/java.jdbc "0.5.8"]
I'm also getting an error when trying to migrate with Postgres but the issue is different from Ashton's.
The error I'm getting with running lein migrate
is:
Exception in thread "main" Syntax error compiling at (/private/var/folders/2c/1xhskbj17xb0gcx7j9kfxq740000gn/T/form-init5968680565182525726.clj:1:125).
at clojure.lang.Compiler.load(Compiler.java:7647)
at clojure.lang.Compiler.loadFile(Compiler.java:7573)
at clojure.main$load_script.invokeStatic(main.clj:452)
at clojure.main$init_opt.invokeStatic(main.clj:454)
at clojure.main$init_opt.invoke(main.clj:454)
at clojure.main$initialize.invokeStatic(main.clj:485)
at clojure.main$null_opt.invokeStatic(main.clj:519)
at clojure.main$null_opt.invoke(main.clj:516)
at clojure.main$main.invokeStatic(main.clj:598)
at clojure.main$main.doInvoke(main.clj:561)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:705)
at clojure.main.main(main.java:37)
Caused by: org.postgresql.util.PSQLException: This ResultSet is closed.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2852)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.setFetchSize(AbstractJdbc2ResultSet.java:1875)
at org.postgresql.jdbc4.Jdbc4Statement.createResultSet(Jdbc4Statement.java:37)
at org.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandler.handleResultRows(AbstractJdbc2Statement.java:221)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1853)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:561)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:405)
at org.postgresql.jdbc2.AbstractJdbc2Connection.execSQLUpdate(AbstractJdbc2Connection.java:382)
at org.postgresql.jdbc2.AbstractJdbc2Connection.getTransactionIsolation(AbstractJdbc2Connection.java:904)
at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:593)
at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:574)
at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:587)
at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:574)
at clojure.java.jdbc$db_do_execute_prepared_statement.invokeStatic(jdbc.clj:805)
at clojure.java.jdbc$db_do_execute_prepared_statement.invoke(jdbc.clj:800)
at clojure.java.jdbc$db_do_prepared.invokeStatic(jdbc.clj:844)
at clojure.java.jdbc$db_do_prepared.invoke(jdbc.clj:817)
at clojure.java.jdbc$execute_BANG_$execute_helper__556.invoke(jdbc.clj:959)
at clojure.java.jdbc$execute_BANG_.invokeStatic(jdbc.clj:963)
at clojure.java.jdbc$execute_BANG_.invoke(jdbc.clj:941)
at clojure.java.jdbc$execute_BANG_.invokeStatic(jdbc.clj:952)
at clojure.java.jdbc$execute_BANG_.invoke(jdbc.clj:941)
at ragtime.jdbc$ensure_migrations_table_exists.invokeStatic(jdbc.clj:42)
at ragtime.jdbc$ensure_migrations_table_exists.invoke(jdbc.clj:40)
at ragtime.jdbc.SqlDatabase.applied_migration_ids(jdbc.clj:61)
at ragtime.core$migrate_all.invokeStatic(core.clj:57)
at ragtime.core$migrate_all.invoke(core.clj:33)
at ragtime.repl$migrate.invokeStatic(repl.clj:32)
at ragtime.repl$migrate.invoke(repl.clj:17)
at scripts.migration$migrate.invokeStatic(migration.clj:18)
at scripts.migration$migrate.invoke(migration.clj:17)
at clojure.lang.Var.invoke(Var.java:380)
at user$eval140.invokeStatic(form-init5968680565182525726.clj:1)
at user$eval140.invoke(form-init5968680565182525726.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7176)
at clojure.lang.Compiler.eval(Compiler.java:7166)
at clojure.lang.Compiler.load(Compiler.java:7635)
... 12 more
My integration with Leiningen is also similar to Ashton's but my project.clj
is:
(defproject clj-admin "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:min-lein-version "2.0.0"
:dependencies
[[org.clojure/clojure "1.10.0"]
[compojure "1.6.1"]
[http-kit "2.3.0"]
[postgresql "9.3-1102.jdbc41"]
[ragtime "0.8.0"]
[ring/ring-defaults "0.3.2"]]
:plugins
[[lein-ring "0.12.5"]]
:ring {:handler clj-admin.handler/app}
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring/ring-mock "0.3.2"]]}}
:aliases {"migrate" ["run" "-m" "scripts.migration/migrate"]
"rollback" ["run" "-m" "scripts.migration/rollback"]})
And my deps tree is:
[clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]]
[compojure "1.6.1"]
[clout "2.2.1"]
[instaparse "1.4.8" :exclusions [[org.clojure/clojure]]]
[medley "1.0.0"]
[org.clojure/tools.macro "0.1.5"]
[ring/ring-codec "1.1.0"]
[commons-codec "1.10"]
[ring/ring-core "1.6.3"]
[clj-time "0.11.0"]
[joda-time "2.8.2"]
[commons-fileupload "1.3.3"]
[commons-io "2.5"]
[crypto-equality "1.0.0"]
[crypto-random "1.2.0"]
[http-kit "2.3.0"]
[javax.servlet/servlet-api "2.5" :scope "test"]
[nrepl "0.6.0" :exclusions [[org.clojure/clojure]]]
[org.clojure/clojure "1.10.0"]
[org.clojure/core.specs.alpha "0.2.44"]
[org.clojure/spec.alpha "0.2.176"]
[postgresql "9.3-1102.jdbc41"]
[ragtime "0.8.0"]
[ragtime/core "0.8.0"]
[ragtime/jdbc "0.8.0"]
[org.clojure/java.jdbc "0.5.8"]
[resauce "0.1.0"]
[ring/ring-defaults "0.3.2"]
[javax.servlet/javax.servlet-api "3.1.0"]
[ring/ring-anti-forgery "1.3.0"]
[hiccup "1.0.5"]
[ring/ring-headers "0.3.0"]
[ring/ring-ssl "0.3.0"]
[ring/ring-mock "0.3.2" :scope "test"]
[cheshire "5.8.0" :scope "test"]
[com.fasterxml.jackson.core/jackson-core "2.9.0" :scope "test"]
[com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.9.0" :scope "test"]
[com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.9.0" :scope "test"]
[tigris "0.1.1" :scope "test"]
Any ideas? Thanks!
@albertchan I was having the same issue, changing [postgresql "9.3-1102.jdbc41"]
for [org.postgresql/postgresql "42.2.5"]
dependency solved that.
I'm trying to make a migration in postgres, I'm following the getting started and using the integreation with leiningen:
Runing the command:
$ lein migrate
I get the following error:Caused by: java.lang.ClassCastException: clojure.lang.PersistentVector cannot be cast to clojure.lang.Named at clojure.core$name.invokeStatic(core.clj:1546) at clojure.core$name.invoke(core.clj:1540) at clojure.java.jdbc$as_sql_name.invokeStatic(jdbc.clj:67) at clojure.java.jdbc$as_sql_name.invoke(jdbc.clj:56) at clojure.java.jdbc$create_table_ddl$spec_to_string449.invoke(jdbc.clj:1052) at clojure.core$map$fn4785.invoke(core.clj:2646) at clojure.lang.LazySeq.sval(LazySeq.java:40) at clojure.lang.LazySeq.seq(LazySeq.java:49) at clojure.lang.LazySeq.first(LazySeq.java:71) at clojure.lang.RT.first(RT.java:667) at clojure.core$first__4339.invokeStatic(core.clj:55) at clojure.string$join.invokeStatic(string.clj:180) at clojure.string$join.invoke(string.clj:180) at clojure.java.jdbc$create_table_ddl.invokeStatic(jdbc.clj:1056) at clojure.java.jdbc$create_table_ddl.doInvoke(jdbc.clj:1041) at clojure.lang.RestFn.invoke(RestFn.java:423) at ragtime.jdbc$migrations_table_ddl.invokeStatic(jdbc.clj:15) at ragtime.jdbc$migrations_table_ddl.invoke(jdbc.clj:14) at ragtime.jdbc$ensure_migrations_table_exists.invokeStatic(jdbc.clj:43) at ragtime.jdbc$ensure_migrations_table_exists.invoke(jdbc.clj:41) at ragtime.jdbc.SqlDatabase.applied_migration_ids(jdbc.clj:62) at ragtime.core$migrate_all.invokeStatic(core.clj:57) at ragtime.core$migrate_all.invoke(core.clj:33) at ragtime.repl$migrate.invokeStatic(repl.clj:32) at ragtime.repl$migrate.invoke(repl.clj:17) at investtrack.scripts.migration$migrate.invokeStatic(migration.clj:10) at investtrack.scripts.migration$migrate.invoke(migration.clj:9) at clojure.lang.Var.invoke(Var.java:375) at user$eval5.invokeStatic(form-init4999925638129078061.clj:1) at user$eval5.invoke(form-init4999925638129078061.clj:1) at clojure.lang.Compiler.eval(Compiler.java:6927) at clojure.lang.Compiler.eval(Compiler.java:6917) at clojure.lang.Compiler.load(Compiler.java:7379)