带有环境变量抛出错误的 Ragtime 迁移(Heroku 部署)
Ragtime Migrate with Environment Variables throwing Error (Heroku Deployment)
我正在尝试 运行 lein ragtime migrate
在 heroku dyno 上。通常,我会在 project.clj
中设置数据库路径,如下所示:
(defproject my-project "0.1.0-SNAPSHOT"
:min-lein-version "2.0.0"
:dependencies [[org.clojure/clojure "1.6.0"]
[org.clojure/java.jdbc "0.3.7"]
[postgresql "9.3-1102.jdbc41"]
[ragtime "0.3.9"]
[ring "1.4.0-RC1"]
[ring/ring-defaults "0.1.2"]]
:plugins [[lein-ring "0.8.13"]
[ragtime/ragtime.lein "0.3.9"]]
...
:ragtime {:migrations ragtime.sql.files/migrations
:database (System/getenv "DATABASE_URL")}
...
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring-mock "0.1.5"]]
:test {:ragtime {:database (System/getenv "DATABASE_URL")}}})
当我 运行 命令时,我在本地和通过 Heroku 进行 depolying 时都收到以下错误
java.lang.IllegalArgumentException: No method in multimethod 'connection' for dispatch value: postgres
任何正确方向的指示都将不胜感激。
Ragtime 0.3.9 使用来自连接 url 的方案作为连接多方法的调度值。代码是here and here。但是 heroku 的 DATABASE_ENV 没有 "jdbc" 而是 "postgres" 方案(这是有道理的,它必须是通用的)。
解决方法是添加 "jdbc://" 前缀:
:ragtime {:migrations ragtime.sql.files/migrations
:database ~(str "jdbc://" (System/getenv "DATABASE_URL"))}
您也可以升级到 [ragtime "0.4.0"]
,它不使用该方案来了解如何创建连接。有关 upgrade path from 0.3.x
的信息,请参阅 wiki
我正在尝试 运行 lein ragtime migrate
在 heroku dyno 上。通常,我会在 project.clj
中设置数据库路径,如下所示:
(defproject my-project "0.1.0-SNAPSHOT"
:min-lein-version "2.0.0"
:dependencies [[org.clojure/clojure "1.6.0"]
[org.clojure/java.jdbc "0.3.7"]
[postgresql "9.3-1102.jdbc41"]
[ragtime "0.3.9"]
[ring "1.4.0-RC1"]
[ring/ring-defaults "0.1.2"]]
:plugins [[lein-ring "0.8.13"]
[ragtime/ragtime.lein "0.3.9"]]
...
:ragtime {:migrations ragtime.sql.files/migrations
:database (System/getenv "DATABASE_URL")}
...
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring-mock "0.1.5"]]
:test {:ragtime {:database (System/getenv "DATABASE_URL")}}})
当我 运行 命令时,我在本地和通过 Heroku 进行 depolying 时都收到以下错误
java.lang.IllegalArgumentException: No method in multimethod 'connection' for dispatch value: postgres
任何正确方向的指示都将不胜感激。
Ragtime 0.3.9 使用来自连接 url 的方案作为连接多方法的调度值。代码是here and here。但是 heroku 的 DATABASE_ENV 没有 "jdbc" 而是 "postgres" 方案(这是有道理的,它必须是通用的)。
解决方法是添加 "jdbc://" 前缀:
:ragtime {:migrations ragtime.sql.files/migrations
:database ~(str "jdbc://" (System/getenv "DATABASE_URL"))}
您也可以升级到 [ragtime "0.4.0"]
,它不使用该方案来了解如何创建连接。有关 upgrade path from 0.3.x