Eu tenho um ambiente Rails3 padrão, RVM 1.2.9, Rails 3.0.5, Ruby 1.9.2p180, MySQL2 Gem 0.2.7, mysql-5.5.10-osx10.6-x86_64
O erro que recebo ao executar rake db:migrate
a criação do banco de dados é:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
config / database.yml tem
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
com certeza é algo simples que estou perdendo.
mysql
ruby-on-rails-3
macos
Jamie Buchanan
fonte
fonte
Respostas:
Primeiro, para encontrar seu arquivo de soquete:
mysqladmin variables | grep socket
Para mim, isso dá:
| socket | /tmp/mysql.sock |
Em seguida, adicione uma linha ao seu
config/database.yml
:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /tmp/mysql.sock
fonte
mysqladmin: command not found
Command not found
indica que você não tem o mysql instalado.PATH
) - você deve ser explícito, por exemplo./program_name ...
. Isso significa que o programa real executado tende a ser independente de onde você tenta executá-lo.Encontrei!
Altere
host: localhost
em config / database.yml parahost: 127.0.0.1
fazer com que os trilhos se conectem sobre TCP / IP em vez de soquete local.development: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx
fonte
Seu servidor mysql pode não estar funcionando. Abaixo explica como iniciar o servidor. Este é um trecho do arquivo README que vem com o download do mysql.
Após a instalação, você pode iniciar o MySQL executando os seguintes comandos em uma janela de terminal. Você deve ter privilégios de administrador para executar esta tarefa.
Se você instalou o item de inicialização, use este comando:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start (ENTER YOUR PASSWORD, IF NECESSARY) (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
Se você não usar o item de inicialização, digite a seguinte sequência de comando:
shell> cd /usr/local/mysql shell> sudo ./bin/mysqld_safe (ENTER YOUR PASSWORD, IF NECESSARY) (PRESS CONTROL-Z) shell> bg (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
fonte
unset TMPDIR
emysql_install_db --verbose --user=
whoami` --basedir = "$ (brew --prefix mysql)" --datadir = / usr / local / var / mysql --tmpdir = / tmp....then I had to start the server
mysql.server start`Estas são as opções para corrigir esse problema:
Opção 1: mude seu host para 127.0.0.1
staging: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx socket: your-location-socket
Opção 2: Parece que você tem 2 conexões em seu servidor MySql. Para encontrar a localização do arquivo de soquete, faça o seguinte:
mysqladmin variables | grep socket
para mim dá:
mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)' Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!
ou
mysql --help
Recebo este erro porque instalei o XAMPP em meu OS X Versão 10.9.5 para aplicativo PHP. Escolha um dos locais de soquete padrão aqui.
Eu escolho os aplicativos de trilhos padrão:
socket: /tmp/mysql.sock
Para meus aplicativos PHP, eu instalo o XAMPP, então defino meu soquete aqui:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
OUTROS Localização do soquete no OS X
Para MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Para instalador de pacotes do MySQL:
socket: /tmp/mysql.sock
Para MySQL incluído no Mac OS X Server:
socket: /var/mysql/mysql.sock
Para Ubuntu:
socket: /var/run/mysqld/mysql.sock
Opção 3: se todas essas configurações não funcionarem, você pode remover o local do soquete:
staging: # socket: /var/run/mysqld/mysql.sock
Espero que isso lhe ajude.
fonte
socket: /var/run/mysqld/mysql.sock
funcionou para mim"/tmp/mysql.sock" será criado automaticamente quando você iniciar o servidor MySQL. Portanto, lembre-se de fazer isso antes de iniciar o servidor Rails.
fonte
Com a minha instalação do MAMP no OSX, o socket MySQL está localizado em
/Applications/MAMP/tmp/mysql/mysql.sock
. Eu costumavalocate mysql.sock
encontrar o local do meu soquete MySQL.Então, meu se
config/database.yml
parece com:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /Applications/MAMP/tmp/mysql/mysql.sock
fonte
Se você estiver no Mac OSX,
Localizações de soquete MySQL Unix no Mac OS X por tipo de instalação
Então, basta mudar o seu database.yml no
socket: /tmp/mysql.sock
para apontar para o lugar certo, dependendo de qual sistema operacional e tipo de instalação que você está usandofonte
O local padrão para o soquete MySQL no Mac OS X é
/var/mysql/mysql.sock
.fonte
Eu tive o mesmo problema, mas nenhuma das respostas deu um passo a passo do que eu precisava fazer. Este erro ocorre porque seu arquivo de socket ainda não foi criado. Tudo o que tem a fazer é:
/tmp/mysql.sock
seja criado, para fazer isso, execute:mysql server start
config/database.yml
arquivo e adicione / edite asocket: /tmp/mysql.sock
entradarake:dbmigrate
mais uma vez e tudo deve funcionar bemfonte
rake db:migrate
*Descobri que o problema é que só tenho um ambiente de produção. Não tenho um ambiente de desenvolvimento ou teste.
Adicionando 'RAILS_ENV = produção' para dar o comando
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
funcionou
fonte
Se você estiver executando MYSQL por meio do XAMPP:
Abra o arquivo de configuração mysql XAMPP (no OSX):
/Applications/XAMPP/etc/my.cnf
Copie o caminho do soquete:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Arquivo de configuração do banco de dados do projeto Open Rails: myproject / config / database.yml
Adicione a configuração do soquete à configuração do banco de dados de desenvolvimento:
->
development: adapter: mysql2 encoding: utf8 reconnect: false database: difiuri_falcioni pool: 5 username: root password: host: localhost socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Apreciar :)
fonte
Você tem problemas como este: Não é possível conectar ao servidor MySQL local através do soquete '/var/run/mysqld/mysqld.sock'
Resposta: $ sudo service mysql start
fonte
Na minha máquina o serviço mysqld parou por isso estava me dando o mesmo problema.
1: - Vá para o terminal e digite
sudo service mysqld restart
Isso irá reiniciar o serviço mysqld e criar um novo arquivo sock no local requerido.
fonte
Se você estiver executando MYSQL por meio de XAMPP ou LAMPP no Ubuntu ou outro Linux, tente:
socket: /opt/lampp/var/mysql/mysql.sock
fonte