【发布时间】:2016-09-12 04:37:55
【问题描述】:
我试图让erlang-mysql-driver 工作,我设法设置它并进行查询,但有两件事我不能做。(https://code.google.com/archive/p/erlang-mysql-driver/issues)
(顺便说一句,我是 Erlang 新手)
这是我连接MySQL的代码。
<erl>
out(Arg) ->
mysql:start_link(p1, "127.0.0.1", "root", "azzkikr", "MyDB"),
{data, Result} = mysql:fetch(p1, "SELECT * FROM messages").
</erl>
1。我无法从表中获取数据。
mysql.erl 不包含有关如何获取表数据的任何具体信息,但这是我能做到的最远的。
{A,B} = mysql:get_result_rows(Result),
B.
结果是这样的:
ERROR erlang code threw an uncaught exception:
File: /Users/{username}/Sites/Yaws/index.yaws:1
Class: error
Exception: {badmatch,[[4,0,<<"This is done baby!">>,19238],
[5,0,<<"Success">>,19238],
[6,0,<<"Hello">>,19238]]}
Req: {http_request,'GET',{abs_path,"/"},{1,1}}
Stack: [{m181,out,1,
[{file,"/Users/{username}/.yaws/yaws/default/m181.erl"},
{line,18}]},
{yaws_server,deliver_dyn_part,8,
[{file,"yaws_server.erl"},{line,2818}]},
{yaws_server,aloop,4,[{file,"yaws_server.erl"},{line,1232}]},
{yaws_server,acceptor0,2,[{file,"yaws_server.erl"},{line,1068}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]
我知道我需要以某种方式获取第二个元素并使用 foreach 来获取每个数据,但字符串以不同的格式返回,例如查询的字符串是Success,但返回的字符串是<<"Success">>。
{badmatch,[[4,0,<<"This is done baby!">>,19238],
[5,0,<<"Success">>,19238],
[6,0,<<"Hello">>,19238]]}
第一个问题是:如何从表中获取数据?
2。如何使用变量向表中插入值?
我可以使用这种方法将数据插入表中:
Msg = "Hello World",
mysql:prepare(add_message,<<"INSERT INTO messages (`message`) VALUES (?)">>),
mysql:execute(p1, add_message, [Msg]).
但是有两件事我遇到了麻烦,
1. 我在没有<< 和>> 运算符的情况下插入数据,因为当我执行Msg = << ++ "Hello World" >>, 时,erlang 会抛出异常(我认为我做错了什么),我不知道是否需要它们但没有它们我可以将数据插入表中,但执行后此错误困扰我:
yaws code at /Users/{username}/Yaws/index.yaws:1 crashed or ret bad val:{updated,
{mysql_result,
[],
[],
1,
[]}}
Req: {http_request,'GET',{abs_path,"/"},{1,1}}
当我命令插入数据时,返回的原子是 updated。
问题2是:如何正确插入数据到表中?
【问题讨论】:
-
你为什么选择这个特定的mysql驱动程序?从 2007 年开始,您可能仍然需要为 Erlang 付费!如果它真的有效,我会感到惊讶,从那时起 MySQL 和 Erlang 都经历了十几个版本更改。有什么理由吗?
-
如果你有两个问题,你应该把它们分成两个问题。