MemSQL бинарно совместим с Mysql и использует те же драйверы. Однако эта приятная теория не применима, когда вы подключаетесь из Elixir с помощью mariaex или mysqlex.
С mariaex я могу нормально подключиться:
но я не могу сделать запрос из-за проблемы с enable_binary_protocol:
Включение бинарного протокола в memsql.cnf для типа агрегатора работает для некоторых коротких запросов, но не для более длинных. Во-первых, после редактирования memsql.cnf для включения строки «enable_binary_protocol=true» и перезапуска кластера с помощью «memsql-ops memsql-restart» я проверил, что параметр действительно установлен:
И теперь некоторые вещи работают, но не другие:
Кстати, этот запрос отлично работает в интерфейсе командной строки memSQL:
Тем временем драйвер mysqlex даже не подключается:
Так что я в основном в тупике. Кто-нибудь успешно использует Elixir с memSQL? Если да, то какой секретный ингредиент?
Одним из вариантов может быть использование библиотеки Erlang. Этот (также доступен в Hex) может быть хорош, но я понятия не имею, как вызывать функции Erlang из Elixir. Самое близкое, что я получил, это успешно скомпилировать его в iex после добавления зависимости {:mysql, "~> 1.0"} в мой mix.exs.