blog.programfan.info
新网站即将启用

[原]Erlang连接mysql问题解决

情况是这样的,我以前没有用erlang连接过mysql,最近做的东西需要用到mysql,但我最近在用的时候出现一些问题,如下:

 

代码

E:\Program Files3\erl5.6.5\lib\erlyweb-0.7.1\test>erl
Eshell V5.6.5  (abort with ^G)
1> erlydb:start(mysql, [{hostname, "localhost"}, {username, "root"}, {password,
"sa"}, {database, "test"}]).

=INFO REPORT==== 29-Jun-2010::22:38:11 ===
    application: crypto
    exited: {shutdown,{crypto_app,start,[normal,[]]}}
    type: temporary
mysql_conn:620: greeting version "5.0.41-community-nt" (protocol 10) salt "W1--8
s^[" caps 41516 serverchar <<48,2,0,

                             0,0,0,0,

                             0,0,0,0,

                             0,0,0,0,

                             0>>salt2 ",jSA,UJSB0iB"

=ERROR REPORT==== 29-Jun-2010::22:38:12 ===
Error in process <0.37.0> with exit value: {badarg,[{erlang,port_control,[crypto
_drv02,5,"sa"]},{crypto,control,2},{mysql_auth,password_new,2},{mysql_auth,do_ne
w_auth,8},{mysql_conn,mysql_init,5},{mysql_conn,init,9}]}

mysql:502: failed starting first MySQL connection handler, exiting

 

 

这儿我犯了一个毛病,不会看错误信息,上面的错误信息已经明确告诉你出错的模块,本题为例

exited: {shutdown,{crypto_app,start,[normal,[]]}}
说明本程序在调用模块crypto_app的start函数时出错,我不会看这个,还傻傻的一点点的看源码,想一点点的找到出错的地方,呵(有点可笑)

 注意:在这之前要先确定你的erlang和mysql都没有问题,方法下:

mysql验证方法:

C:\Users\Administrator>mysql -u root -psa
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.41-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

erlang验证方法

C:\Users\Administrator>erl
Eshell V5.6.5  (abort with ^G)
1>

确定没问题后开始对模块crypto_app进行测试。这时可以一点点往下找,不过最方便的方法是直接查找

application: crypto
  
type: temporary
”  

找到如下两个网址:

http://code.google.com/p/scalaris/issues/detail?id=21

http://blog.syntaxvssemantics.com/2010/02/getting-erlang-crypto-to-work-on.html

(这个里面的答案不是我当时找的最接近的,记得到时找到一个教你一步步找错的,挺好!)

可以找到很接近正确答案的东西了,答案就是“ssl application 和 crypto application 都需要在 PATH 中找到 openssl 的 dll 文件。”    

下载Win32OpenSSL-0_9_8o.exe(6.88M)或Win32OpenSSL-1_0_0a.exe

下载地址:http://www.slproweb.com/download/Win32OpenSSL-0_9_8o.exe  

注意:在安装的时候,一定注意一点,如图:

 如果先下面那个的话, 一定要注意装好后将其 bin 目录加入PATH 中(我就是选择了下面那个选项,而又没有把bin下加入到path下,导致了N天的抓狂
  

 这步完成后,一切就OK了,这时再测试一下,结果如下:

 

代码
C:\Users\Administrator>erl
Eshell V5.
6.5 (abort with ^G)
1> erlydb:start(mysql, [{hostname, "localhost"}, {username, "root"}, {password,"
sa"}, {database, "test"}]).
mysql_conn:620: greeting version "5.0.41-community-nt" (protocol 10) salt "8!9=g
mof" caps 41516 serverchar <<48,2,0,

0,0,0,0,

0,0,0,0,

0,0,0,0,

0>>salt2 "4lDM6e}bVexL"
mysql_auth:
187: mysql_auth send packet 1: <<5,162,0,0,64,66,15,0,8,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
114,111,111,116,0,20,54,239,170,
177,132,242,79,196,24,125,188,8,81,
43,86,197,57,142,107,10>>
mysql_auth:
187: mysql_auth send packet 3: <<82,79,64,75,64,70,86,85,0>>
mysql_conn:
426: fetch <<"use test">> (id <0.38.0>)
ok
2>

 

 

一切OK,太爽了,一周的晦气都消失了。分享一下,免的和我遇到一样错误的人再经历我一样的痛苦一周,哈哈

 

——2010-07-02  00:50 于福州

 

 

 

 



 

posted @ 2010-07-02 00:51  Gordon Chao  Views(3062)  Comments(0Edit  收藏  举报
www.programfan.info
新网站即将启用