我有一个标准的Rails3环境,RVM 1.2.9,Rails 3.0.5,Ruby 1.9.2p180,MySQL2 Gem 0.2.7,mysql-5.5.10-osx10.6-x86_64
运行rake db:migrate
创建数据库时遇到的错误是:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
config / database.yml有
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
确定这很简单,我很想念。
答案 0 :(得分:204)
首先,找到你的套接字文件:
mysqladmin variables | grep socket
对我来说,这给了:
| socket | /tmp/mysql.sock |
然后,在config/database.yml
添加一行:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /tmp/mysql.sock
答案 1 :(得分:82)
发现它!
将config / database.yml中的host: localhost
更改为host: 127.0.0.1
,以使rails通过TCP / IP连接而不是本地套接字。
development:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
答案 2 :(得分:10)
你的mysql服务器可能没有运行。下面介绍如何启动服务器。这是mysql下载附带的README文件的摘录。
安装完成后,您可以通过运行以下命令启动MySQL 终端窗口中的命令。您必须具有管理员权限 执行此任务。
如果已安装启动项,请使用以下命令:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
如果您不使用启动项,请输入以下命令序列:
shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-Z)
shell> bg
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
答案 3 :(得分:6)
答案 4 :(得分:3)
通过在OSX上安装MAMP,MySQL套接字位于/Applications/MAMP/tmp/mysql/mysql.sock
。我使用locate mysql.sock
来查找我的MySQL套接字位置。
所以我的config/database.yml
看起来像是:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /Applications/MAMP/tmp/mysql/mysql.sock
答案 5 :(得分:3)
如果您使用的是Mac OSX,
MySQL Unix套接字的默认位置在Mac OS X和Mac OS X Server上有所不同,具体取决于您选择的安装类型
MySQL Unix Socket Locations on Mac OS X by Installation Type
只需将socket: /tmp/mysql.sock
中的 database.yml 更改为指向正确的位置,具体取决于您使用的操作系统和安装类型
答案 6 :(得分:3)
这些是解决此问题的选项:
选项1:将您的主机更改为127.0.0.1
int currentTab = mSetupSharedPreferences.getInt(CURRENT_TAB, 0)
switch (currentTab) {
case 1: // Switch tab view here to 1
break;
case 2: // Switch tab view here to 2
break;
case 3: // Switch tab view here to 3
break;
}
选项2:您的服务器MySql似乎有2个连接。 要查找套接字文件位置,请执行以下操作:
staging:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
socket: your-location-socket
对我来说:
mysqladmin variables | grep socket
或
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!
我收到此错误是因为我在我的OS X版本10.9.5中为PHP应用程序安装了XAMPP。在此处选择一个默认套接字位置。
我选择默认的rails应用:
mysql --help
对于我的PHP应用程序,我安装了XAMPP,所以我在这里设置了socket:
socket: /tmp/mysql.sock
其他OS X中的套接字位置
对于MAMPP:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
来自MySQL的软件包安装程序:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
对于与Mac OS X Server捆绑在一起的MySQL:
socket: /tmp/mysql.sock
对于Ubuntu:
socket: /var/mysql/mysql.sock
选项3:如果所有这些设置都不起作用,您可以删除套接字位置:
socket: /var/run/mysqld/mysql.sock
我希望这对你有所帮助。
答案 7 :(得分:2)
Mac OS X上MySQL套接字的默认位置是/var/mysql/mysql.sock
。
答案 8 :(得分:1)
我遇到了同样的问题,但没有一个答案能够逐步完成我需要做的事情。发生此错误的原因是尚未创建套接字文件。您所要做的就是:
/tem/mysql.sock
,为此:mysql.server start
config/database.yml
并添加socket: /tmp/mysql.sock
rake:dbmigrate
,一切都应该运动得很好答案 9 :(得分:0)
我发现问题是我只有一个生产环境。我没有开发或测试环境。
添加' RAILS_ENV =生产'给出命令
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
它有效
答案 10 :(得分:0)
如果您通过XAMPP运行MYSQL:
打开XAMPP mysql配置文件(在OSX上):
/Applications/XAMPP/etc/my.cnf
复制套接字路径:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
打开rails项目的数据库配置文件: 的myproject /配置/ database.yml的
将套接字配置添加到开发数据库配置:
- >
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: difiuri_falcioni
pool: 5
username: root
password:
host: localhost
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
享受:)
答案 11 :(得分:0)
你有这样的问题:无法通过socket'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器
Ans:$ sudo service mysql start
答案 12 :(得分:0)
在我的机器上,mysqld服务停止了,这就是为什么它给了我同样的问题。
1: - 转到终端并输入
sudo service mysqld restart
这将重新启动mysqld服务并在所需位置创建一个新的sock文件。
答案 13 :(得分:-1)
如果您正在Ubuntu或其他Linux上通过XAMPP或LAMPP运行MYSQL,请尝试:
socket: /opt/lampp/var/mysql/mysql.sock