Estou tentando conectar ao meu banco de dados MySQL com o terminal na minha Apple (com PHP).
Ontem funcionou bem, e agora de repente recebo o erro no título.
O script funciona quando eu uso o meu navegador para executá-lo (eu tenho o XAMPP instalado), mas o Terminal se recusa a se conectar ao banco de dados.
Aqui está o arquivo que eu incluo para conectar (o script funciona quando não o incluo, mas ele não se conecta ao banco de dados):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Isso deve funcionar, pois funciona com o meu navegador.
O comando que eu uso no Terminal é php scriptname.php
.
localhost
soquete funcione e pode ser importante se você não desejar que a sobrecarga extra envie pacotes para o roteador antes que o banco de dados seja acessado.cd /tmp
e, em seguida:sudo ln -s /var/run/mysqld/mysqld.sock mysql.sock
.Eu também tive esse erro, mas só consegui corrigi-lo através da sugestão aqui .
Para resumir, use:
Ao invés de:
O motivo é que "localhost" é um nome especial para o driver MySQL, que usa o soquete UNIX para conectar-se ao MySQL em vez do soquete TCP.
fonte
hosts
arquivo, ele pode estar em falta ou confusoEu estava tendo o mesmo problema e foi assim que o corrigi:
Eu tinha isso e não funcionou:
Eu fiz isso e funcionou:
Em vez de usar o servidor mysql, eu me conectei diretamente ao soquete Unix. Trabalhou para mim.
fonte
O soquete do MySQL está localizado, em geral, em
/tmp/mysql.sock
ou/var/mysql/mysql.sock
, mas provavelmente o PHP parece no lugar errado.Verifique onde está o seu soquete com:
Quando o updatedb é encerrado:
Em seguida, localize seu php.ini:
isso produzirá algo como:
Edite seu php.ini
Mude as linhas:
onde /tmp/mysql.sock é o caminho para o seu soquete.
Salve suas modificações e saia de ESC + SHIFT: x
Reinicie o Apache
fonte
php.ini.default
paraphp.ini
.sudo apachectl restart
Estou no XAMPP no Mac OS X e a solução de Brian Lowe acima funcionou com uma pequena modificação .
O arquivo mysql.sock está na pasta "/ Applications / xampp / xamppfiles / var / mysql /". Então tive que vinculá-lo em / tmp e / var / mysql. Eu não verifiquei qual é usado pela linha de comando do PHP, mas isso foi corrigido, então estou feliz :-)
fonte
Mac OS X EL Capitan + MAMP Pro Faça isso
Então faça isso
Espero que isso economize algum tempo.
fonte
mysql.dock
o/tmp
que o resolveu. Obrigado!A razão é que o php não consegue encontrar o caminho correto de
mysql.sock
.Por favor, verifique se o seu mysql está rodando primeiro.
Em seguida, confirme se o caminho está
mysql.sock
localizado, por exemplo/tmp/mysql.sock
adicione esta string de caminho ao php.ini:
Finalmente, reinicie o Apache.
fonte
Quando você enfrenta o seguinte problema:
Definir valor "mysql.default_socket" em seu
/etc/php.ini
paraEm seguida, reinicie o serviço web no servidor admin
fonte
Corrija o iminente erro de soquete de 2002 - que está vinculando onde o MySQL coloca o soquete e onde o OSX pensa que deveria estar, o MySQL o coloca em / tmp e o OSX o procura em / var / mysql o soquete é um tipo de arquivo que permite ao cliente mysql comunicação / servidor.
e depois
fonte: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
fonte
Outra solução é corrigir o local do soquete no arquivo de configuração php.ini, como este:
Obviamente, o link simbólico também funciona, portanto, é uma questão de preferência qual você altera.
fonte
Quando você instala o php53-mysql usando port, ele retorna a seguinte mensagem, que é a solução para este problema:
fonte
Eu estava tendo o mesmo problema
[PDOException] SQLSTATE [HY000] [2002] Esse arquivo ou diretório não existe
[ErrorException] Aviso: PDO :: __ construct (): [2002] Não existe esse arquivo ou diretório (tentando conectar-se via unix: ///var/mysql/mysql.sock) em… htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php
Portanto, a solução é fazer um link simbólico para o arquivo de meias, resolvendo o problema. Faça o seguinte para resolvê-lo:
$ sudo mkdir / privado / var / mysql /
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock
fonte: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql- while- browser- works- fine/
fonte
Eu tenho os mesmos erros. O MySQL estava sendo executado como um aplicativo independente antes de iniciar o phpMyAdmin.
Acabei de parar o mysql Então, sudo / Applications / XAMPP / xamppfiles / xampp stop sudo / Aplicativos / XAMPP / xamppfiles / xampp start
Funcionou bem
fonte
Acabei de ter esse problema, mas ele só apareceu ao carregar determinadas páginas (outras páginas funcionaram bem). Aconteceu que eu estava fazendo chamadas para o MySQL depois de encerrar a conexão
mysql_close()
. Então, como o @brucenan disse: verifique se o MySQL está em execução quando você o chama .fonte
Você pode fazer isso simplesmente usando o apelido de MAMP php no terminal da Apple:
Exemplo:
> phpmamp - v
Agora você pode executar algo como:
> phpmamp scriptname.php
Nota: Isso será aplicado apenas para a sessão atual do terminal.
fonte
Como você pode usar o MAMP, altere sua porta para o 3306 padrão ou use 127.0.0.1 no database.php
Ou com as configurações padrão:
fonte
O cliente mySQL, por padrão, tenta se conectar através de um arquivo local chamado soquete, em vez de se conectar ao endereço de loopback (127.0.0.1) para o host local.
O local padrão deste arquivo de soquete, pelo menos no OSX, é
/tmp/mysql.sock
.SOLUÇÃO RÁPIDA, MENOS ELEGANTE
Crie um link simbólico para enganar o sistema operacional e encontrar o soquete correto.
SOLUÇÃO ADEQUADA
Altere o caminho do soquete definido no
startMysql.sh
arquivo em/Applications/MAMP/bin
.fonte