2

最终设置我的 repo Cross DB Ecto 配置后尝试运行查询失败给了我这个:

iex(1)> import Ecto.Query
Ecto.Query
iex(2)> Drupex.DrupalRepo.query(from "watchdog", select: [:wid]);
** (Protocol.UndefinedError) protocol String.Chars not implemented for #Ecto.Query<from w in "watchdog", select: [:wid]>. This protocol is implemented for: Atom, BitString, Date, DateTime, Decimal, Ecto.Date, Ecto.DateTime, Ecto.Time, Float, Integer, List, Mariaex.Query, NaiveDateTime, Postgrex.Copy, Postgrex.Query, Postgrex.Stream, Time, URI, Version, Version.Requirement
    (elixir) lib/string/chars.ex:3: String.Chars.impl_for!/1
    (elixir) lib/string/chars.ex:22: String.Chars.to_string/1
    (ecto) lib/ecto/adapters/sql.ex:613: Ecto.Adapters.SQL.log/4
    (db_connection) lib/db_connection.ex:1186: DBConnection.log/6
    (db_connection) lib/db_connection.ex:643: DBConnection.execute/4
    (ecto) lib/ecto/adapters/sql.ex:256: Ecto.Adapters.SQL.sql_call/6

我试图谷歌如何让错误处理程序显示参数,但什么也没找到,所以我不知道错误是什么——我的查询无效,连接到 MySQL 服务器是否有问题等。

编辑:我想通了,它是Drupex.DrupalRepo.all. 我通过添加IO.inspect调用来解决这个问题lib/ecto/adapters/sql.ex,但这是一个非常肮脏的黑客,肯定有更好的方法。

4

0 回答 0