[英]How do I connect to MemSQL from Elixir
MemSQL與Mysql二進制兼容,並使用相同的驅動程序。 但是,當您從Elixir與mariaex或mysqlex連接時,這種理論上的建議似乎並不適用。
但由於enable_binary_protocol問題,我無法查詢:
在memsql.cnf中為聚合器類型啟用二進制協議可用於某些短查詢,但不適用於較長的查詢。 首先,在編輯memsql.cnf以包括“ enable_binary_protocol = true”行並使用“ memsql-ops memsql-restart”重新啟動集群之后,我檢查了該參數是否確實已設置:
現在有些東西起作用了,但其他東西卻沒有了:
順便說一句,該查詢在memSQL命令行界面中運行良好:
同時,mysqlex驅動程序甚至無法連接:
所以我基本上很沮喪。 有人成功將Elixir與memSQL結合使用嗎? 如果是這樣,秘密成分是什么?
一種選擇是使用Erlang庫。 這個 ( 在Hex上也可用 )可能很好,但是我不知道如何從Elixir調用Erlang函數。 將依賴項{:mysql,“〜> 1.0”}添加到我的mix.exs后,我得到的最接近的文件是在iex中成功編譯了它。
我沒有使用MemSQL
任何經驗,但看起來確實像mysql-otp
在客戶端准備查詢語句。 您可以嘗試像這樣使用它:
# Connect
{:ok, pid} = :mysql.start_link(host: 'localhost', user: 'foo', password: 'hello', database: 'test')
# Select
{:ok, columns, rows} = :mysql.query(pid, "SELECT * FROM mytable WHERE id = ?", [1])
# Transactions
result = :mysql.transaction(pid, fn ->
:ok = :mysql.query("INSERT INTO mytable (foo) VALUES (1)")
raise "foo"
:ok = :mysql.query("INSERT INTO mytable (foo) VALUES (1)")
end)
有關更多詳細信息,請參見官方的Erlang / Elixir崩潰課程 。
請參閱http://docs.memsql.com/docs/prepared-statements 。 應該有一個客戶端設置,僅使用客戶端准備的語句-該頁面上列出了許多示例。 這是使此類客戶端連接的推薦方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.