簡體   English   中英

在為Ruby on Rails應用程序設置mysql數據庫時出現“無法通過套接字連接到本地MySQL服務器'/var/run/mysqld/mysqld.sock'”錯誤

[英]Getting “Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'” error when setting up mysql database for Ruby on Rails app

我整天都在努力,我需要一些幫助。

我正在嘗試為我正在從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'

我已經查看了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) 

這對我來說有點奇怪......

更新:這是我的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

更新:現在嘗試使用自制軟件重新安裝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

我最終想出了這個。

我運行了以下命令:

$ mysqladmin variables | grep socket

返回的是:

| performance_schema_max_socket_classes                  | 12                                                                                                                                                                                                                                                                                                                                               |
| performance_schema_max_socket_instances                | 323                                                                                                                                                                                                                                                                                                                                              |
| socket                                                 | /tmp/mysql.sock

然后我檢查了我的database.yml文件中的套接字位置,這是錯誤的:

那是錯的。 將它更換到正確的插座位置后,一切都像魅力一樣。 我希望這可以幫助將來的某個人。

你必須啟動mysql服務器

mysql.server start

我想你可能正在尋找

rake db:migrate

試着找到你的MySQL的my.cnf文件。 在典型的Ubuntu服務器上,它位於:/etc/mysql/my.cnf

打開文件並確保套接字變量ie socket = /var/run/mysqld/mysqld.sock

對應於應用程序的database.yml中的套接字值

只是簡單地跑

mysql server.restart

重啟服務器。 這為我解決了這個問題。

要解決此錯誤,請先找到您的套接字文件,在終端中運行以下命令

mysqladmin variables | grep socket

對我來說,這給了:

| socket              | /var/run/mysqld/mysqld.sock

然后,在config / database.yml中添加一行:

development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /var/run/mysqld/mysqld.sock

這將解決這個問題。

我有類似的問題(也使用Brew,也得到PID文件問題)與mysql和我的PHP應用程序。 它是在我將OSX更新為Mavericks之后開始的,可能是系統更新覆蓋了我的設置。 奇怪的是,在我重新創建/etc/php.ini並設置指向/tmp/mysql.sock的正確套接字地址后,關於mysql的所有內容都重新開始工作。 也許它會幫助谷歌搜索這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM