Error: "protocol DBConnection.Query not implemented for %MyXQL.Query"


I have a project that I didn’t touch for some time (~8 months). I got back to it yesterday and cloned my repo on a new computer (so now I have Elixir 1.9.1 compiled with Erlang/OTP 22). It’s a pretty vanilla Phoenix app in terms of how it uses Ecto - there’s nothing custom about it.

I also have a small MySQL database that used to use Ecto.Adapters.MySQL. When I tried compiling my code, I got the error message that Ecto.Adapters.MySQL is deprecated. I changed it to Ecto.Adapters.MyXQL and everything compiled. However, when I run my app I get the following exception:

** (exit) an exception was raised:
** (Protocol.UndefinedError) protocol DBConnection.Query not implemented for %MyXQL.Query{cache: :reference, name: “ecto_391”, num_params: nil, ref: #Reference<0.3803409325.2878341126.162939>, statement: “SELECT, b0.is_silent, b0.start_date, b0.end_date, b0.url, b0.weight, b0.image_id, b0.inserted_at, b0.updated_at FROM banners AS b0”, statement_id: nil} of type MyXQL.Query (a struct). This protocol is implemented for the following type(s): Mariaex.Query

This seems very strange…

As far as I can see, I have:
ecto_sql: 3.2.0
ecto: 3.2.3
myxql: 0.2.9

Anyone has any ideas?


1 Like

This is really weird, could you try rm -rf _build and recompile your project?


It worked, thank you!