-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
I'm following the GUIDE.rst. I'm at the migrations section at the moment. Migrations seems to work flawlessly from REPL but I noticed that the command from Running Database Migrations in Production doesn't work.
I got error:
$ lein run :duct/migrator !10041
Exception in thread "main" Syntax error compiling at (/private/var/folders/5y/8ds1f60x1mx9xcqx61hw_6w00000gn/T/form-init4783091540319585709.clj:1:125).
Error on key :duct.database.sql/hikaricp when building system
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: clojure.lang.ExceptionInfo: Error on key :duct.database.sql/hikaricp when building system {:reason :integrant.core/build-threw-exception, :system {
:duct.logger.timbre/println {:enabled? true, :async? false, :min-level nil, :rate-limit nil, :output-fn :inherit, :fn #object[taoensso.timbre.appenders.core$p
rintln_appender$fn__4380 0x2474331d "taoensso.timbre.appenders.core$println_appender$fn__4380@2474331d"]}, :duct.logger/timbre #duct.logger.timbre.TimbreLogge
r{:config {:level :info, :appenders {:duct.logger.timbre/println {:enabled? true, :async? false, :min-level nil, :rate-limit nil, :output-fn :inherit, :fn #ob
ject[taoensso.timbre.appenders.core$println_appender$fn__4380 0x2474331d "taoensso.timbre.appenders.core$println_appender$fn__4380@2474331d"]}}}}}, :function
#object[clojure.lang.MultiFn 0x46977829 "clojure.lang.MultiFn@46977829"], :key :duct.database.sql/hikaricp, :value {:jdbc-url nil, :logger #duct.logger.timbre
.TimbreLogger{:config {:level :info, :appenders {:duct.logger.timbre/println {:enabled? true, :async? false, :min-level nil, :rate-limit nil, :output-fn :inhe
rit, :fn #object[taoensso.timbre.appenders.core$println_appender$fn__4380 0x2474331d "taoensso.timbre.appenders.core$println_appender$fn__4380@2474331d"]}}}}}
}
at integrant.core$build_exception.invokeStatic(core.cljc:283)
at integrant.core$build_exception.invoke(core.cljc:282)
at integrant.core$try_build_action.invokeStatic(core.cljc:294)
at integrant.core$try_build_action.invoke(core.cljc:291)
at integrant.core$build_key.invokeStatic(core.cljc:300)
at integrant.core$build_key.invoke(core.cljc:296)
at clojure.core$partial$fn__5826.invoke(core.clj:2632)
at clojure.core.protocols$fn__8144.invokeStatic(protocols.clj:168)
at clojure.core.protocols$fn__8144.invoke(protocols.clj:124)
at clojure.core.protocols$fn__8099$G__8094__8108.invoke(protocols.clj:19)
at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
at clojure.core.protocols$fn__8131.invokeStatic(protocols.clj:75)
at clojure.core.protocols$fn__8131.invoke(protocols.clj:75)
at clojure.core.protocols$fn__8073$G__8068__8086.invoke(protocols.clj:13)
at clojure.core$reduce.invokeStatic(core.clj:6828)
at clojure.core$reduce.invoke(core.clj:6810)
at integrant.core$build.invokeStatic(core.cljc:321)
at integrant.core$build.invoke(core.cljc:303)
at integrant.core$init.invokeStatic(core.cljc:418)
at integrant.core$init.invoke(core.cljc:410)
at duct.core$exec_config.invokeStatic(core.clj:225)
at duct.core$exec_config.invoke(core.clj:213)
at todo.main$_main.invokeStatic(main.clj:12)
at todo.main$_main.doInvoke(main.clj:7)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:384)
at user$eval151.invokeStatic(form-init4783091540319585709.clj:1)
at user$eval151.invoke(form-init4783091540319585709.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
Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:955)
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:77)
at hikari_cp.core$make_datasource.invokeStatic(core.clj:251)
at hikari_cp.core$make_datasource.invoke(core.clj:248)
at duct.database.sql.hikaricp$eval5348$fn__5350.invoke(hikaricp.clj:45)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at integrant.core$try_build_action.invokeStatic(core.cljc:292)
... 40 more
I understand the problem, though, I'm not sure how should I specify data source or jdbc url from the command line.
I noticed that in the error log the :duct.database.sql/hikaricp keyword is missing. Once I added:
:duct.database.sql/hikaricp {:jdbc-url nil,
:logger #ig/ref :duct/logger,
:connection-uri "jdbc:sqlite:db/dev.sqlite"}
to the config.edn the command lein run :duct/migrator works fine.
If this is the right solution for this issue, I can add a minor comment that the command requires definition of :duct.database.sql/hikaricp. If not, am I missing something?
Metadata
Metadata
Assignees
Labels
No labels