Hey there,
I’ve just been toying around with MS Azure a bit and I’ve been unable to connect to an Azure Database for MySQL server with Ecto/Mariaex.
When I try launch my application or run migrations, it crashes with the following error message:
09:44:48.179 [error] GenServer #PID<0.175.0> terminating
** (FunctionClauseError) no function clause matching in Mariaex.Messages.decode_msg/2
(mariaex) lib/mariaex/messages.ex:261: Mariaex.Messages.decode_msg(<<254, 109, 121, 115, 113, 108, 95, 110, 97, 116, 105, 118, 101, 95, 112, 97, 115, 115, 119, 111, 114, 100, 0, 51, 30, 66, 85, 81, 127, 123, 34, 125, 97, 115, 105, 99, 4, 34, 102, 93, 10, 30, 84, 0>>, :handshake_send)
(mariaex) lib/mariaex/messages.ex:225: Mariaex.Messages.decode/2
(mariaex) lib/mariaex/protocol.ex:1102: Mariaex.Protocol.msg_decode/2
(mariaex) lib/mariaex/protocol.ex:1070: Mariaex.Protocol.msg_recv/3
(mariaex) lib/mariaex/protocol.ex:155: Mariaex.Protocol.handshake_recv/2
(db_connection) lib/db_connection/connection.ex:134: DBConnection.Connection.connect/2
(connection) lib/connection.ex:622: Connection.enter_connect/5
(stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: nil
State: Mariaex.Protocol
** (exit) exited in: :gen_server.call(#PID<0.175.0>, {:checkout, #Reference<0.2452934895.1515978754.176436>, true, :infinity}, 5000)
** (EXIT) an exception was raised:
** (FunctionClauseError) no function clause matching in Mariaex.Messages.decode_msg/2
(mariaex) lib/mariaex/messages.ex:261: Mariaex.Messages.decode_msg(<<254, 109, 121, 115, 113, 108, 95, 110, 97, 116, 105, 118, 101, 95, 112, 97, 115, 115, 119, 111, 114, 100, 0, 51, 30, 66, 85, 81, 127, 123, 34, 125, 97, 115, 105, 99, 4, 34, 102, 93, 10, 30, 84, 0>>, :handshake_send)
(mariaex) lib/mariaex/messages.ex:225: Mariaex.Messages.decode/2
(mariaex) lib/mariaex/protocol.ex:1102: Mariaex.Protocol.msg_decode/2
(mariaex) lib/mariaex/protocol.ex:1070: Mariaex.Protocol.msg_recv/3
(mariaex) lib/mariaex/protocol.ex:155: Mariaex.Protocol.handshake_recv/2
(db_connection) lib/db_connection/connection.ex:134: DBConnection.Connection.connect/2
(connection) lib/connection.ex:622: Connection.enter_connect/5
(stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
(db_connection) lib/db_connection/poolboy.ex:112: DBConnection.Poolboy.checkout/3
(db_connection) lib/db_connection.ex:920: DBConnection.checkout/2
(db_connection) lib/db_connection.ex:742: DBConnection.run/3
(db_connection) lib/db_connection.ex:1133: DBConnection.run_meter/3
(db_connection) lib/db_connection.ex:584: DBConnection.prepare_execute/4
(ecto) lib/ecto/adapters/mysql/connection.ex:22: Ecto.Adapters.MySQL.Connection.execute/4
(ecto) lib/ecto/adapters/sql.ex:243: Ecto.Adapters.SQL.sql_call/6
(ecto) lib/ecto/adapters/sql.ex:193: Ecto.Adapters.SQL.query!/5
I haven’t been able to look too much into it but it seems that the binary string is a response from the MySQL server; the binary in the error message begins with << 254 >>
(as seems to be expected by Mariaex) and then continues with the string mysql_native_password
.
If anyone has come across this issue before I’d be interested in how they resolved it before I spend hours trying to troubleshoot it further