Can';t通过套接字连接到本地MySQL服务器:I';我迷路了[Rails应用程序]
我目前正在尝试将Rails 4应用程序部署到AWS,但每次尝试在AWS上查看应用程序时,都会出现应用程序错误。我检查了日志,看到: 无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器 我一直在读一些东西,比如:,但我没有任何运气尝试这些不同的解决方案,我把自己逼疯了 该应用程序在本地运行良好 以下是一些细节:Can';t通过套接字连接到本地MySQL服务器:I';我迷路了[Rails应用程序],mysql,ruby-on-rails,amazon-web-services,ruby-on-rails-4,Mysql,Ruby On Rails,Amazon Web Services,Ruby On Rails 4,我目前正在尝试将Rails 4应用程序部署到AWS,但每次尝试在AWS上查看应用程序时,都会出现应用程序错误。我检查了日志,看到: 无法通过套接字'/var/lib/MySQL/MySQL.sock'(2)连接到本地MySQL服务器 我一直在读一些东西,比如:,但我没有任何运气尝试这些不同的解决方案,我把自己逼疯了 该应用程序在本地运行良好 以下是一些细节: 我已经安装了Mysql和Mysql服务器 服务正在运行(同样,本地的一切都按预期工作) 这是my.cnf的[client]部分,位于/
- 我已经安装了Mysql和Mysql服务器
- 服务正在运行(同样,本地的一切都按预期工作)
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
我看到一些关于mysqld的建议,还有一些关于mysql的建议——我不理解其中的区别
Database.yml
development:
adapter: mysql2
encoding: utf8
database: wp_development
pool: 5
username: root
password: **Left out
host: localhost
我今天刚下载了MySql,所以我使用的是最新版本5.5*我在运行Linux
有人能告诉我一个解决办法吗
谢谢 如果您想在本地连接,应该在database.yml中的
development
config中添加socket:/var/run/mysqld/mysqld.sock
另外,在AWS上运行应用程序时,请确保RAILS_ENV是正确的。如果未设置,则应为
development
。但我不确定您是如何启动应用程序的。原因可能是您的文件中指定的套接字路径可能错误
首先,要查找套接字文件:
mysqladmin variables | grep socket
对我来说,这给了:
| socket /var/run/mysqld/mysqld.sock
然后,将这一行添加到socket字段中的config/database.yml中。请参见以下示例
示例:socket:/var/run/mysqld/mysqld.sock
发展模式
生产方式
测试模式
这一点已在其他员额中说明。正如我所提到的,我已经看到了很多这样的解决方案,但没有任何效果。服务器似乎正在运行。我在database.yml中有一个socket,更改为127.0.0.1只会导致另一个错误“无法连接到127.0.0.1上的MySql”。好的,所以我将socket行添加到了我的database.yml中,AWS默认将RAILS_ENV变量设置为production,所以我将其更改为“development”。我取得了进步。我不再在AWS上看到“应用程序失败”错误页面,现在我看到了一个Rails错误页面,但该页面仍然抱怨“无法通过socket连接到本地MySQL服务器”/var/run/mysqld/mysqld.sock“(2)”错误。我正在AWS上使用Beanstalk启动应用程序。“eb启动”。我所相信的几乎都能处理。
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /var/run/mysqld/mysqld.sock # this line
production:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /var/run/mysqld/mysqld.sock # this line
test:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /var/run/mysqld/mysqld.sock # this line