yogthos / migratus

MIGRATE ALL THE THINGS!
642 stars 93 forks source link

Caused by: java.io.FileNotFoundException: Could not locate migratus/core__init.class or migratus/core.clj on classpath. #178

Closed cmargulhano closed 4 years ago

cmargulhano commented 4 years ago

Here's my project.clj:

(defproject test-upnid "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"] [ring/ring-defaults "0.3.2"] [ring/ring-json "0.5.0"] [korma "0.4.3"] [mysql/mysql-connector-java "5.1.6"] [migratus "1.2.7"] [org.slf4j/slf4j-log4j12 "1.6.2"] [org.clojure/java.jdbc "0.3.7"]] :plugins [[lein-ring "0.12.5"]] :ring {:handler test-upnid.handler/app} :profiles {:dev {:dependencies [[javax.servlet/servlet-api "2.5"] [ring/ring-mock "0.3.2"]]}})

(ns my-migrations (:require [migratus.core :as migratus]))

(def config {:store :database :migration-dir "migrations/" :init-script "init.sql" :init-in-transaction? false :migration-table-name "foo_bar" :db {:classname "com.mysql.jdbc.Driver" :subprotocol "mysql" :subname "//127.0.0.1:3306/upnid" :user "root" :password "root"}})

(migratus/init config)

(migratus/migrate config)

(migratus/rollback config)

(migratus/up config 20200122120000)

running: lein migratus migrate

error: java.lang.Exception: Error loading /home/claudio/KORADI/Projects/test-upnid/project.clj at leiningen.core.project$read_raw$fn8733.invoke (project.clj:1012) leiningen.core.project$read_raw.invokeStatic (project.clj:1006) leiningen.core.project$read_raw.invoke (project.clj:1002) leiningen.core.project$read.invokeStatic (project.clj:1023) leiningen.core.project$read.invoke (project.clj:1020) leiningen.core.project$read.invokeStatic (project.clj:1024) leiningen.core.project$read.invoke (project.clj:1020) leiningen.core.main$_main$fn8955.invoke (main.clj:416) leiningen.core.main$_main.invokeStatic (main.clj:411) leiningen.core.main$_main.doInvoke (main.clj:408) clojure.lang.RestFn.invoke (RestFn.java:421) clojure.lang.Var.invoke (Var.java:383) clojure.lang.AFn.applyToHelper (AFn.java:156) clojure.lang.Var.applyTo (Var.java:700) clojure.core$apply.invokeStatic (core.clj:646) clojure.core$apply.invoke (core.clj:641) clojure.main$main_opt.invokeStatic (main.clj:316) clojure.main$main_opt.invoke (main.clj:310) clojure.main$main.invokeStatic (main.clj:421) clojure.main$main.doInvoke (main.clj:384) clojure.lang.RestFn.invoke (RestFn.java:457) clojure.lang.Var.invoke (Var.java:394) clojure.lang.AFn.applyToHelper (AFn.java:165) clojure.lang.Var.applyTo (Var.java:700) clojure.main.main (main.java:37) Caused by: clojure.lang.Compiler$CompilerException: java.io.FileNotFoundException: Could not locate migratus/coreinit.class or migratus/core.clj on classpath., compiling:(/home/claudio/KORADI/Projects/test-upnid/project.clj:20:1) at clojure.lang.Compiler.load (Compiler.java:7391) clojure.lang.Compiler.loadFile (Compiler.java:7317) clojure.lang.RT$3.invoke (RT.java:320) leiningen.core.project$read_raw$fn8733.invoke (project.clj:1010) leiningen.core.project$read_raw.invokeStatic (project.clj:1006) leiningen.core.project$read_raw.invoke (project.clj:1002) leiningen.core.project$read.invokeStatic (project.clj:1023) leiningen.core.project$read.invoke (project.clj:1020) leiningen.core.project$read.invokeStatic (project.clj:1024) leiningen.core.project$read.invoke (project.clj:1020) leiningen.core.main$_main$fn8955.invoke (main.clj:416) leiningen.core.main$_main.invokeStatic (main.clj:411) leiningen.core.main$_main.doInvoke (main.clj:408) clojure.lang.RestFn.invoke (RestFn.java:421) clojure.lang.Var.invoke (Var.java:383) clojure.lang.AFn.applyToHelper (AFn.java:156) clojure.lang.Var.applyTo (Var.java:700) clojure.core$apply.invokeStatic (core.clj:646) clojure.core$apply.invoke (core.clj:641) clojure.main$main_opt.invokeStatic (main.clj:316) clojure.main$main_opt.invoke (main.clj:310) clojure.main$main.invokeStatic (main.clj:421) clojure.main$main.doInvoke (main.clj:384) clojure.lang.RestFn.invoke (RestFn.java:457) clojure.lang.Var.invoke (Var.java:394) clojure.lang.AFn.applyToHelper (AFn.java:165) clojure.lang.Var.applyTo (Var.java:700) clojure.main.main (main.java:37) Caused by: java.io.FileNotFoundException: Could not locate migratus/coreinit.class or migratus/core.clj on classpath. at clojure.lang.RT.load (RT.java:456) clojure.lang.RT.load (RT.java:419) clojure.core$load$fn14281.invoke (core.clj:5893) clojure.core$load.invokeStatic (core.clj:5892) clojure.core$load.doInvoke (core.clj:5876) clojure.lang.RestFn.invoke (RestFn.java:408) clojure.core$load_one.invokeStatic (core.clj:5697) clojure.core$load_one.invoke (core.clj:5692) clojure.core$load_lib$fn__14230.invoke (core.clj:5737) clojure.core$load_lib.invokeStatic (core.clj:5736) clojure.core$load_lib.doInvoke (core.clj:5717) clojure.lang.RestFn.applyTo (RestFn.java:142) clojure.core$apply.invokeStatic (core.clj:648) clojure.core$apply.invoke (core.clj:641) clojure.core$load_libs.invokeStatic (core.clj:5775) clojure.core$load_libs.doInvoke (core.clj:5758) clojure.lang.RestFn.applyTo (RestFn.java:137) clojure.core$apply.invokeStatic (core.clj:648) clojure.core$apply.invoke (core.clj:641) clojure.core$require.invokeStatic (core.clj:5858) clojure.core$require.doInvoke (core.clj:5796) clojure.lang.RestFn.invoke (RestFn.java:408) my_migrations$eval1289$loading14173auto__1290.invoke (project.clj:20) my_migrations$eval1289.invokeStatic (project.clj:20) my_migrations$eval1289.invoke (project.clj:20) clojure.lang.Compiler.eval (Compiler.java:6927) clojure.lang.Compiler.eval (Compiler.java:6916) clojure.lang.Compiler.load (Compiler.java:7379) clojure.lang.Compiler.loadFile (Compiler.java:7317) clojure.lang.RT$3.invoke (RT.java:320) leiningen.core.project$read_raw$fn__8733.invoke (project.clj:1010) leiningen.core.project$read_raw.invokeStatic (project.clj:1006) leiningen.core.project$read_raw.invoke (project.clj:1002) leiningen.core.project$read.invokeStatic (project.clj:1023) leiningen.core.project$read.invoke (project.clj:1020) leiningen.core.project$read.invokeStatic (project.clj:1024) leiningen.core.project$read.invoke (project.clj:1020) leiningen.core.main$_main$fn__8955.invoke (main.clj:416) leiningen.core.main$_main.invokeStatic (main.clj:411) leiningen.core.main$_main.doInvoke (main.clj:408) clojure.lang.RestFn.invoke (RestFn.java:421) clojure.lang.Var.invoke (Var.java:383) clojure.lang.AFn.applyToHelper (AFn.java:156) clojure.lang.Var.applyTo (Var.java:700) clojure.core$apply.invokeStatic (core.clj:646) clojure.core$apply.invoke (core.clj:641) clojure.main$main_opt.invokeStatic (main.clj:316) clojure.main$main_opt.invoke (main.clj:310) clojure.main$main.invokeStatic (main.clj:421) clojure.main$main.doInvoke (main.clj:384) clojure.lang.RestFn.invoke (RestFn.java:457) clojure.lang.Var.invoke (Var.java:394) clojure.lang.AFn.applyToHelper (AFn.java:165) clojure.lang.Var.applyTo (Var.java:700) clojure.main.main (main.java:37)

yogthos commented 4 years ago

It looks like you're missing migratus-lein plugin under :plugins. It's needed to run lein migratus ... commands.

yogthos commented 4 years ago

Also, note that this code will be executed during compile time, which is most likely not what you want:

(migratus/init config)

(migratus/migrate config)

(migratus/rollback config)

(migratus/up config 20200122120000)

You should wrap these statements in functions, and call those from main on startup.