Rails: Não é possível conectar ao servidor MySQL local através do soquete '/var/run/mysqld/mysqld.sock'

4

Então, eu tenho um aplicativo Ruby on Rails que estou tentando executar (em desenvolvimento) no Snow Leopard. Eu tenho que trabalhar no meu computador Ubuntu, mas agora preciso configurar meu ambiente Snow Leopard.

Originalmente, instalei o MySQL 2.8.1 Ruby Gem e estava com esse problema:

uninitialized constant MysqlCompat::MysqlRes

Mas, graças a este tutorial , consegui resolvê-lo executando este comando e instalando uma versão anterior do Gem:

export ARCHFLAGS="-arch i386 -arch x86_64" ;sudo gem install --no-rdoc --no-ri -v=2.7 mysql -- --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

Agora que resolvi esse problema, estou com um erro diferente:

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

Isso acontece quando tento executar rake db:migrate, bem como quando o servidor está em execução. Como posso resolver esse problema?

Andrew
fonte

Respostas:

5

A razão pela qual você está enfrentando esse erro é porque o database.ymlarquivo de configuração do aplicativo rails está especificando o local do soquete.

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: myapp_development
  pool: 5
  username: root
  password:
  socket: /var/run/mysqld/mysqld.sock

Como o seu Ubuntu MySQL Socket está em um local diferente do seu Snow Leopard MySQL Socket, você precisará criar um link simbólico para poder compartilhar o mesmo arquivo de configuração entre computadores diferentes.

sudo ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock

Nota: Eu tive que criar o mysqlddiretório antes de poder colocar um link simbólico nele.

Andrew
fonte
11
Obrigado por compartilhar sua solução. Observe que você pode de fato aceitar sua própria resposta.
Arjan
0

Verifique /tmp/mysql.sock.

phoebus
fonte
E como se decide o que fazer com isso?
Tamara Wijsman