【发布时间】:2010-11-16 14:37:14
【问题描述】:
我想连接到远程 MySQL 主机(使用rake db:create),但 Rails 始终认为它是本地的。
Database.yml 使用以下配置:
defaults: &defaults
encoding: unicode
adapter: mysql
username: <username>
password: *************
port: 3306
host: <remote ip address>
development:
<<: *defaults
database: <db name>
test: &test
<<: *defaults
database: <db name>
production:
<<: *defaults
database: <db name>
在数据库上尝试任何操作时总是会出现此错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
只要我使用本地数据库(即没有主机/端口部分),配置就可以工作。 使用给定的详细信息连接到远程 MySQL 服务器可以正常工作。
对出了什么问题有任何想法吗?
编辑:
该问题仅出现在 rake:db:create 上,其他任务有效 - 错误消息非常具有误导性。
【问题讨论】:
-
你能粘贴完整的 database.yml 吗?你使用哪个环境?我想你在某处定义了一个套接字配置。
-
(见编辑,似乎是一个奇怪的错误错误信息)
-
检查您的防火墙/路由器设置,您似乎根本没有 TCP 连接或端口被阻止。
-
已解决 - 只是创建 rake 任务不起作用。其他一切都在工作。不知道为什么 rails 认为 create 是本地的。
-
创建任务是否使用与其他用户不同的用户连接?如果是这样,请检查 mysql 表,可能需要更改主机列,
SELECT CURRENT_USER();也可能会有所帮助,默认情况下 mysql 假设通过套接字连接,您需要在远程访问中明确告知使用端口
标签: mysql ruby-on-rails database