【发布时间】:2017-05-28 07:25:42
【问题描述】:
我正在关注this tutorial,它使用extensions 字段在config.exs 中添加了一个postgrex 扩展。然而,现在添加 postgrex 扩展的方法已被弃用,我们现在应该使用 type 字段而不是 extensions 字段。我正在按照geo library github page 上的代码添加扩展名:
config.exs
Postgrex.Types.define(MyApp.PostgresTypes,
[Geo.PostGIS.Extension] ++ Ecto.Adapters.Postgres.extensions(),
json: Poison)
use Mix.Config
config :api, Api.Repo,
types: MyApp.PostgresTypes,
adapter: Ecto.Adapters.Postgres,
database: "api_repo",
username: "postgres",
password: "postgres",
hostname: "localhost",
web_port: String.to_integer(System.get_env("PORT") || "4000"),
timeout: 60_000,
pool_timeout: 60_000
config :api, ecto_repos: [Api.Repo]
但是我收到了这个错误:
bash-3.2$ mix ecto.migrate
** (Mix.Config.LoadError) could not load config config/config.exs
** (UndefinedFunctionError) function Ecto.Adapters.Postgres.extensions/0 is undefined (module Ecto.Adapt
ers.Postgres is not available)
Ecto.Adapters.Postgres.extensions()
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
(stdlib) erl_eval.erl:470: :erl_eval.expr/5
(stdlib) erl_eval.erl:878: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:404: :erl_eval.expr/5
(stdlib) erl_eval.erl:122: :erl_eval.exprs/5
我在网上看到这有时是由于version of postgrex 造成的,但这是一个非常旧的版本,我正在使用{:postgrex, "~> 0.13.2"},。我错过了什么?
【问题讨论】:
-
您是否下载并安装了 PostGIS?
-
@a_horse_with_no_name 啊,不。我刚刚在我的部门中安装了 Geo 作为一个部门:
[{:geo, "~> 1.4"}]。我将下载 PostGis -
您使用的是哪个版本的 Ecto? (查看 mix.lock 中的确切版本)
-
@Dogbert ecto 版本 2.1.4
标签: postgresql ecto elixir postgrex