【问题标题】:Debug level logging for `mix ecto.rollback` and `mix ecto.migrate` commands`mix ecto.rollback` 和 `mix ecto.migrate` 命令的调试级别日志记录
【发布时间】:2017-09-29 19:16:11
【问题描述】:

目前,我正在寻找在运行 mix 任务时添加 SQL 语句日志记录的方法。例如,mix ecto.rollbackmix ecto.migrate 等命令输出信息:

...
13:45:53.016 [info]  == Running Repo.Migrations.AddAmountToUserResources.change/0 backward
13:45:53.016 [info]  alter table user_resources
...

但是,我希望看到ecto 生成的准确的 SQL 语句,而不是神秘的alter table user_resources,它会命中 DB。 有什么办法吗?

我检查了几个 SO 答案,看起来很相关(例如 Disable Elixir Ecto Debug output)。不幸的是,在我上面的案例中,他们没有帮助我。 提前致谢。

【问题讨论】:

    标签: elixir phoenix-framework ecto elixir-mix


    【解决方案1】:

    允许记录原始 SQL 的功能已添加到 Ecto on 15 Jan 2017。从那时起,Ecto 就再也没有发布过。一旦存在,或者您从 Github master 分支切换到使用 Ecto 的版本,您可以将 --log-sql 传递给命令 ecto.migrateecto.rollback 以使其记录已执行的完整查询。

    $ mix ecto.migrate --log-sql
    $ mix ecto.rollback --log-sql
    

    【讨论】:

    • 我已经将{:ecto, git: "git://github.com/elixir-ecto/ecto.git", override: true} 添加到我的mix.exs 中,在我更新了依赖项之后,它可以工作了。 mix ecto.migrate --log-sql 现在显示理想的调试语句。我认为您的答案在该功能发布后仍然有效。谢谢。
    猜你喜欢
    • 2014-05-02
    • 2017-01-03
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多