`

NoMethodError: undefined method `init' for Mysql:Class

 
阅读更多
今天闲来无事,在ubuntu上源码安装了mysql 5.1.57,安装过程在这里不详细叙述,在安装完后,把mysql的配置文件my.cnf放到了/etc下,即/etc/my.cnf在里面做了mysql的socket指向(/usr/local/tmp/mysql.sock)然后启动mysql,一切正常。ok,到此为止我以为万事大吉了,然后我进入到项目的根目录,rails  c  进入控制台,执行一个简单的查询,问题出现了: NoMethodError: undefined method `init' for Mysql:Class不知道啥原因,一番google后,发现有人说需要安装mysql驱动,ok,于是 gem install  mysql  ,结果在执行安装的过程中又出现了错误:
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.
没办法,继续google,原来是缺少了依赖包,ok,继续安装相关的依赖包:
sudo apt-get install libmysqlclient-dev
之后,继续 gem install  mysql,ok,这次没有发现问题了,然后进入到项目的跟目录,rails c 进入控制台,执行简单的查询,完了,又报错了:Can't connect to local MySQL server through socket '//var/run/mysqld/mysqld.sock' (2),一看,很明显,在链接的时候mysql找不到socket文件,咦,但是问题来了啊,我刚刚已经把mysql配置好了啊,而且我可以进入到mysql里面去执行查询了啊,怎么现在忽然报这个socket错误呢。好吧,我来看看,我刚才的这一串操作后,给我的mysql造成了什么影响,我进入到/etc,然后进入到我的my.cnf文件,发现里面没有任何改动的迹象,奇怪了,但是当我在/etc下边ll  mysql的时候发现了一个问题,在这个/etc目录下多了一个目录mysql,然后我进入到这个目录,发现里面也有个my.cnf,里面的socket指向刚好是上边报的找不到socket的路径,这就是说,在用程序链接mysql的时候,mysql读取了/etc下的my.cnf文件了,而并没有读取我的/etc/my.cnf文件,这个mysql文件目录是怎么来的呢,应该是我在前边安装libmysqlclient-dev的时候生成的。ok,问题的原因找到了,那么对于我现在遇到的问题怎么解决呢?好吧,我进入到了项目的database.yml文件,在每个环境的配置后边都加上了socket指向:socket: /usr/local/mysql/tmp/mysql.sock,ok,我再进入到项目跟目录,执行简单的查询,问题解决了,这就是说,我可以在项目里面来指定该项目用到的mysl的socket的位置。
问题是解决了,但是我们得想想啊,我不能在每个项目里面都配置这个socket吧,最好是在/etc下的my.cnf里面配置一遍,然后让mysql自己去找就可以了,我们就不用在每个项目地下都配置这个东东了,可是问题在于,现在的/etc下有两个my.cnf,到底该咋办?好吧,我们来看看,这两个文件是不是可以删除掉一个
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics