2007年12月10日星期一

Ruby on Rails 中mysql 一个异常的处理

在用ror 写应用的时候,我发现运行程序的时候出现了一个mysql的问题。出现的异常是
“No such file or directory – /tmp/mysql.sock”,这说明ror 找不到mysql的socket.原因是ror中默认从tmp目录下找mysql.sock文件,但是不同的linux可能安装mysql后这个文件的位置是不同 的,解决的办法是重新指定一下,首先是找一下现在你的linux系统中这个文件的位置在哪里,我们可以通过vim etc/my.cnf来看一下,发现这个文件的位置是
/var/lib/mysql/mysql.sock
好问题的原因已经知道,接下来就是解决的办法,有两个,你可以把
/usr/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/vendor/mysql.rb
这个文件中的MYSQL_UNIX_ADDR的值改成现在的mysql.sock所在的位置,但是这样作不利于程序的移植(可能你需要部署到其他的linux上)。第二种方法相对简单也较通用,直接作一个link,
看下面的命令。
sudo ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
好了,现在你应该可以正常的使用ROR连接数据库了。
参考文献:http://developer.novell.com/wiki/index.php/Configuring_Ruby_Rails_for_Apache_on_SUSE_Linux_Enterprise_Server#Installing_MySQL

没有评论: