No such file or directory - /tmp/mysql.sock

来源:互联网 发布:索引超出矩阵维度 编辑:程序博客网 时间:2024/05/22 03:44

 

转自: http://hi.baidu.com/royalchy/blog/item/591aac595a2b562f2834f059.html

So you installed Ubuntu, got all excited about developing your Rails application on it, and then…

No such file or directory - /tmp/mysql.sock)

No matter what you do, database connection doesn’t work. Youreinstall Rails (of course you installed it via “sudo apt-get rails”,right??), reinstall MySql, recreate the database schema, change root’spassword, install Kubuntu instead of Ubuntu… But it doesn’t work.

The reason for this error is quite simple, really: somewhere alongRuby’s Mysql driver, mysql socket is expected to exist at/tmp/mysql.sock. But that’s not where it is in Ubuntu. If you take sometime searching, you’ll notice that the .sock file is actually on/var/run/mysqld - and it’s called mysqld.sock instead.

In fact, if you Google it, there is a closed bug entry on Rails’ tracking systemregarding that problem, and the suggested solution there is to changeyour database.yml to add a link to the correct socket. Something like:

production:
adapter: mysql
socket: /var/run/mysqld/mysqld.sock

Which is obviously not a good idea, since you’ll end up creating newprojects, moving to a different OS or whatever - and everything willbreak again.

So I tried a small patchwork to fool mysql’s driver, and then it works nicely:

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

That way you will actually HAVE a /tmp/mysql.sock file, as expectedby mysql driver, and everything will connect just fine. Just like it’smeant to be. Amen!

原创粉丝点击