情况是这样的,我以前没有用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”
找到如下两个网址:
(这个里面的答案不是我当时找的最接近的,记得到时找到一个教你一步步找错的,挺好!)
可以找到很接近正确答案的东西了,答案就是“ssl application 和 crypto application 都需要在 PATH 中找到 openssl 的 dll 文件。”
下载Win32OpenSSL-0_9_8o.exe(6.88M)或Win32OpenSSL-1_0_0a.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"(protocol10) salt"8!9=gmof"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 packet1:<<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 packet3:<<82,79,64,75,64,70,86,85,0>>mysql_conn:426: fetch<>(id<0.38.0>)
ok2>
一切OK,太爽了,一周的晦气都消失了。分享一下,免的和我遇到一样错误的人再经历我一样的痛苦一周,哈哈
——2010-07-02 00:50 于福州