It looks like a bug in Drift. Try adding an init function which takes one argument but doesn't do anything.
Your new migrate-config should look something like: (defn migrate-config [] {:init (fn [_] ) :directory "/db/migrations" :current-version db-version :update-version update-db-version}) Let me know if that does the trick and I'll fix the bug in Drift. On Nov 26, 8:31 am, Edmund <edmundsjack...@gmail.com> wrote: > Hello, > > Thanks for this library, it'll really help me out. I'm a little > stuck on getting bootstrapped, can you perhaps give me some guidance ? > Basically I'm stuck at step 5, attempting to create my first > migration, what am I missing ? > > Thanks, > > Edmund > > ----------------------------------------------------------------- > Steps taken > 1. Added to :dev-dependencies in project.clj > [drift "1.4.0"] > [org.drift-db/drift-db-mysql "1.0.4"] > > 2. Created a table to hold the version number inserted 0 > create table schema_migrations ( > version int not null primary key > ) engine InnoDB; > > 3. Created src/config/migrate_config.clj > (ns config.migrate-config > (:require [clojure.contrib.sql :as sql])) > > (defonce DB (atom {:classname "com.mysql.jdbc.Driver" > :subprotocol "mysql" > :subname "//mysql-server:3306/bookkeeper" > :user "user" > :password "password" > :auto-commit true > :fetch-size 500})) > > (defn db-version [] > (sql/with-connection DB > (sql/with-query-results res > ["select version from schema_migrations limit 1"] > (:version (first res))))) > > (defn update-db-version [version] > (sql/with-connection DB > (sql/insert-values :schema_migrations [:version] [version]))) > > (defn migrate-config [] > {:directory "/db/migrations" > :current-version db-version > :update-version update-db-version}) > > 4. Run lein deps to grab the deps > > 5. Attempted to create a migration, or get something going > > $ lein create-migration first > Listening for transport dt_socket at address: 57528 > Exception in thread "main" java.lang.RuntimeException: > java.lang.NoSuchMethodError: > clojure.lang.KeywordLookupSite.<init>(ILclojure/lang/Keyword;)V > at clojure.lang.Util.runtimeException(Util.java:165) > at clojure.lang.Compiler.eval(Compiler.java:6476) > at clojure.lang.Compiler.eval(Compiler.java:6455) > at clojure.lang.Compiler.load(Compiler.java:6902) > at clojure.lang.RT.loadResourceScript(RT.java:357) > at clojure.lang.RT.loadResourceScript(RT.java:348) > at clojure.lang.RT.load(RT.java:427) > at clojure.lang.RT.load(RT.java:398) > at clojure.core$load$fn__4610.invoke(core.clj:5386) > at clojure.core$load.doInvoke(core.clj:5385) > at clojure.lang.RestFn.invoke(RestFn.java:408) > at clojure.core$load_one.invoke(core.clj:5200) > at clojure.core$load_lib.doInvoke(core.clj:5237) > at clojure.lang.RestFn.applyTo(RestFn.java:142) > at clojure.core$apply.invoke(core.clj:602) > at clojure.core$load_libs.doInvoke(core.clj:5271) > at clojure.lang.RestFn.applyTo(RestFn.java:137) > at clojure.core$apply.invoke(core.clj:602) > at clojure.core$require.doInvoke(core.clj:5352) > at clojure.lang.RestFn.invoke(RestFn.java:421) > at > drift.generator$eval5$loading__4505__auto____6.invoke(generator.clj:1) > at drift.generator$eval5.invoke(generator.clj:1) > at clojure.lang.Compiler.eval(Compiler.java:6465) > at clojure.lang.Compiler.eval(Compiler.java:6455) > at clojure.lang.Compiler.load(Compiler.java:6902) > at clojure.lang.RT.loadResourceScript(RT.java:357) > at clojure.lang.RT.loadResourceScript(RT.java:348) > at clojure.lang.RT.load(RT.java:427) > at clojure.lang.RT.load(RT.java:398) > at clojure.core$load$fn__4610.invoke(core.clj:5386) > at clojure.core$load.doInvoke(core.clj:5385) > at clojure.lang.RestFn.invoke(RestFn.java:408) > at clojure.core$load_one.invoke(core.clj:5200) > at clojure.core$load_lib.doInvoke(core.clj:5237) > at clojure.lang.RestFn.applyTo(RestFn.java:142) > at clojure.core$apply.invoke(core.clj:602) > at clojure.core$load_libs.doInvoke(core.clj:5271) > at clojure.lang.RestFn.applyTo(RestFn.java:137) > at clojure.core$apply.invoke(core.clj:602) > at clojure.core$require.doInvoke(core.clj:5352) > at clojure.lang.RestFn.invoke(RestFn.java:408) > at user$eval1.invoke(NO_SOURCE_FILE:1) > at clojure.lang.Compiler.eval(Compiler.java:6465) > at clojure.lang.Compiler.eval(Compiler.java:6454) > at clojure.lang.Compiler.eval(Compiler.java:6431) > at clojure.core$eval.invoke(core.clj:2795) > at clojure.main$eval_opt.invoke(main.clj:296) > at clojure.main$initialize.invoke(main.clj:315) > at clojure.main$null_opt.invoke(main.clj:348) > at clojure.main$main.doInvoke(main.clj:426) > at clojure.lang.RestFn.invoke(RestFn.java:421) > at clojure.lang.Var.invoke(Var.java:405) > at clojure.lang.AFn.applyToHelper(AFn.java:163) > at clojure.lang.Var.applyTo(Var.java:518) > at clojure.main.main(main.java:37) > Caused by: java.lang.NoSuchMethodError: > clojure.lang.KeywordLookupSite.<init>(ILclojure/lang/Keyword;)V > at drift.core$find_init_fn.<clinit>(core.clj:25) > at drift.core__init.load(Unknown Source) > at drift.core__init.<clinit>(Unknown Source) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:247) > at clojure.lang.RT.loadClassForName(RT.java:2030) > at clojure.lang.RT.load(RT.java:417) > at clojure.lang.RT.load(RT.java:398) > at clojure.core$load$fn__4610.invoke(core.clj:5386) > at clojure.core$load.doInvoke(core.clj:5385) > at clojure.lang.RestFn.invoke(RestFn.java:408) > at clojure.core$load_one.invoke(core.clj:5200) > at clojure.core$load_lib.doInvoke(core.clj:5237) > at clojure.lang.RestFn.applyTo(RestFn.java:142) > at clojure.core$apply.invoke(core.clj:602) > at clojure.core$load_libs.doInvoke(core.clj:5271) > at clojure.lang.RestFn.applyTo(RestFn.java:137) > at clojure.core$apply.invoke(core.clj:602) > at clojure.core$require.doInvoke(core.clj:5352) > at clojure.lang.RestFn.invoke(RestFn.java:457) > at > drift.builder$eval11$loading__4505__auto____12.invoke(builder.clj:1) > at drift.builder$eval11.invoke(builder.clj:1) > at clojure.lang.Compiler.eval(Compiler.java:6465) > ... 53 more > > On 24/11/2011 22:38, Matt wrote: > > > > > > > > > Drift is a Rails like migration library for Clojure. > > > I've recently released version 1.4.0 of Drift which includes: > > > A new Java interface. You can now run Drift migrations, find out > > the database version, or determine the highest migration number > > from java. > > > User generated migration numbers and time stamp migration numbers. > > You can now create your own migration number generator or use one > > of the ones included with Drift. By default, Drift will now create > > the migration number from the current time. You can still use the > > old incremental migration number generator if you want. > > > You can find the code for Drift on Github: > >http://github.com/macourtney/drift > > > Drift on Clojars:http://clojars.org/drift -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en