0

我是使用 Mina 进行 Rails 4 应用程序部署的新手。这是一个使用 MySQL 的非常简单的应用程序。服务器是 Digital Ocean 上的 Ubuntu 14.04。我在服务器上安装了 MySQL,并且可以使用我 database.yml 中的凭据在服务器上使用 mysql CLI 登录。但是,当 Mina 尝试运行 rake db:migrate 时,它​​会失败并显示以下内容:

-----> Migrating database
   $ RAILS_ENV="staging" bundle exec rake db:migrate
   rake aborted!
   Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysql.sock' (2)

我验证了 /etc/mysqld/my.cnf 中的套接字位置是 /var/run/mysqld/mysql.sock 并且这也与 database.yml 配置匹配。

为什么?

4

1 回答 1

0

这些是解决您的问题的步骤:

第 1 步:将您的主机更改为 127.0.0.1

staging:
  adapter: mysql2
  host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx
  socket: your-location-socket

第 2 步:您的服务器 MySql 似乎有 2 个连接。要找到您的套接字文件位置,请执行以下操作:

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!

或者

mysql --help 

我收到此错误是因为我在我的 OS X 版本 10.9.5 中为 PHP 应用程序安装了 XAMPP。在此处选择默认套接字位置之一。

我选择默认的 Rails 应用程序:

socket: /tmp/mysql.sock

对于我的 PHP 应用程序,我安装了 XAMPP,所以我在这里设置了我的套接字:

socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

OS X 中的 OTHERS 套接字位置

对于 MAMPP:

socket: /Applications/MAMP/tmp/mysql/mysql.sock

对于来自 MySQL 的包安装程序:

socket: /tmp/mysql.sock

对于与 Mac OS X 服务器捆绑的 MySQL:

socket: /var/mysql/mysql.sock

对于 Ubuntu:

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

有关详细信息ruby​​-on-rails-3-cant-connect-to-local-mysql-server-through-socket-tmp-mysql-s

第 3 步:如果所有这些设置都不起作用,您可以删除您的套接字位置:

staging:
  # socket: /var/run/mysqld/mysql.sock

我希望这对你有帮助。

于 2015-09-22T02:40:20.303 回答