在为Ruby on Rails应用程序设置mysql数据库时出现"无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'"错误

nov*_*rmr 6 mysql sockets macos terminal ruby-on-rails

我整天都在努力,我需要一些帮助.

我正在尝试为我正在从github工作的RoR项目设置mysql数据库.

当我尝试在终端中设置数据库时,我收到以下错误:

Eric-MacBook:~ eric$ cd ~/review_rocket
Eric-MacBook:review_rocket eric$ rake db:setup
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Run Code Online (Sandbox Code Playgroud)

我已经查看了20个关于SO的问题,但没有一个能够帮助我解决我的问题.

数据库已启动并正在运行,并且还设置了database.yml.

我现在有点生气了......拜托......帮助......为时已晚.

更新:我只看了我已安装的宝石,由于某种原因它正在显示mysql2(见下文)

Eric-Reas-MacBook:~ ericrea$ gem list

*** LOCAL GEMS ***

multi_json (1.8.2)
mysql2 (0.3.13)
net-sftp (2.1.2) 
Run Code Online (Sandbox Code Playgroud)

这对我来说有点奇怪......

更新:这是我的database.yml看起来像:

common: &common
  adapter: mysql2
  encoding: utf8
  reconnect: false
  pool: 5
  user_name: xxxx
  password: xxxx
  socket: /var/run/mysqld/mysqld.sock

development:
  <<: *common
  database: dev_review_rocket

# Warning: The database defined as "money_tracker_test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *common
  database: test_review_rocket

production:
  <<: *common
  database: prod_review_rocket
Run Code Online (Sandbox Code Playgroud)

更新:现在尝试使用自制软件重新安装mysql时出现奇怪的错误(见下文):

$ brew install mysql
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.6.1
Already downloaded: /Library/Caches/Homebrew/mysql-5.6.13.mountain_lion.bottle.1.tar.gz
==> Pouring mysql-5.6.13.mountain_lion.bottle.1.tar.gz
==> /usr/local/Cellar/mysql/5.6.13/bin/mysql_install_db --verbose --user=ericrea
2013-10-22 18:32:41 56901 [Note] InnoDB: FTS optimize thread exiting.
2013-10-22 18:32:41 56901 [Note] InnoDB: Starting shutdown...
2013-10-22 18:32:42 56901 [Note] InnoDB: Shutdown completed; log sequence number 1626067
2013-10-22 18:32:42 56901 [Note] /usr/local/Cellar/mysql/5.6.13/bin/mysqld: Shutdown complete

Warning: mysql post_install failed. Rerun with `brew postinstall mysql`.
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
    mysql -uroot

To have launchd start mysql at login:
    ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
    mysql.server start
==> Summary
  /usr/local/Cellar/mysql/5.6.13: 9382 files, 354M
Eric-Reas-MacBook:~ ericrea$ brew postinstall mysql
==> /usr/local/Cellar/mysql/5.6.13/bin/mysql_install_db --verbose --user=ericrea
2013-10-22 18:33:22 57135 [Note] InnoDB: FTS optimize thread exiting.
2013-10-22 18:33:22 57135 [Note] InnoDB: Starting shutdown...
2013-10-22 18:33:23 57135 [Note] InnoDB: Shutdown completed; log sequence number 1626087
2013-10-22 18:33:23 57135 [Note] /usr/local/Cellar/mysql/5.6.13/bin/mysqld: Shutdown complete


READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting

These open issues may also help:
    https://github.com/mxcl/homebrew/issues/22021
    https://github.com/mxcl/homebrew/pull/22480
Run Code Online (Sandbox Code Playgroud)

nov*_*rmr 16

我最终想出了这个.

我运行了以下命令:

$ mysqladmin variables | grep socket
Run Code Online (Sandbox Code Playgroud)

返回的是:

| performance_schema_max_socket_classes                  | 12                                                                                                                                                                                                                                                                                                                                               |
| performance_schema_max_socket_instances                | 323                                                                                                                                                                                                                                                                                                                                              |
| socket                                                 | /tmp/mysql.sock
Run Code Online (Sandbox Code Playgroud)

然后我检查了我的database.yml文件中的套接字位置,这是错误的:

那是错的.将它更换到正确的插座位置后,一切都像魅力一样.我希望这可以帮助将来的某个人.


NM *_*ker 12

你必须启动mysql服务器

mysql.server start
Run Code Online (Sandbox Code Playgroud)

我想你可能正在寻找

rake db:migrate
Run Code Online (Sandbox Code Playgroud)

  • 我并不比你聪明.我以前刚刚经历过这种事情.很高兴我能帮助你.如果你需要打开聊天来解决这个问题,请告诉我. (2认同)