我正在关注this tutorial并在添加this code和角色工厂后,我收到以下错误:
15:09:08.808 [错误] GenServer#PID< 0.245.0>终止 **(UndefinedFunctionError)函数Ecto.Adapters.SQL.begin_test_transaction / 1未定义或私有。 你的意思是:
* in_transaction?/1 (ecto) Ecto.Adapters.SQL.begin_test_transaction(Pxblog.Repo) (elixir) src/elixir_compiler.erl:125: :elixir_compiler.dispatch_loaded/6 (elixir) src/elixir_lexical.erl:17: :elixir_lexical.run/3 (elixir) src/elixir_compiler.erl:30: :elixir_compiler.quoted/3 (elixir) lib/code.ex:363: Code.require_file/2 (elixir) lib/enum.ex:651: Enum."-each/2-lists^foreach/1-0-"/2 (elixir) lib/enum.ex:651: Enum.each/2 (mix) lib/mix/tasks/test.ex:216: Mix.Tasks.Test.run/1
这是我的 test_helper.exs 文件:
{:ok, _} = Application.ensure_all_started(:ex_machina)
ExUnit.start
Mix.Task.run "ecto.create", ~w(-r Pxblog.Repo --quiet)
Mix.Task.run "ecto.migrate", ~w(-r Pxblog.Repo --quiet)
Ecto.Adapters.SQL.begin_test_transaction(Pxblog.Repo)
可能有什么不对?我已使用 mix deps.update --all
更新了所有依赖项。
提前致谢!
答案 0 :(得分:6)
看起来您正在尝试按照已安装Ecto 2.0的Ecto 1.1进行教程定位,这不是完全向后兼容的。你可以降级你的ecto版本,寻找更新的教程或探索Ecto 2中的变化,并调整你当前使用的教程 - http://blog.plataformatec.com.br/2016/04/ecto-2-0-0-rc-is-out/应该给你一个良好的开端。