Acredito que implantei com êxito meu site (muito básico) no fortrabbit, mas assim que me conecto ao SSH para executar alguns comandos (como php artisan migrate
ou php artisan db:seed
), recebo uma mensagem de erro:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
Em algum momento, a migração deve ter funcionado, porque minhas tabelas estão lá - mas isso não explica por que não está funcionando para mim agora.
Respostas:
A mensagem de erro indica que uma conexão MySQL via soquete é tentada (o que não é suportado).
No contexto do Laravel (artesão), você provavelmente deseja usar um ambiente diferente / o correto. Por exemplo:
php artisan migrate --env=production
(ou qualquer ambiente). Veja aqui .fonte
Eu tive o mesmo problema. Nenhuma das soluções acima funcionou para mim. Resolvi o problema alterando o "host" no arquivo /app/config/database.php de "localhost" para "127.0.0.1".
Não sei por que "localhost" não funciona por padrão, mas encontrei esta resposta em uma pergunta semelhante resolvida em um post do symfony2. https://stackoverflow.com/a/9251924/1231563
Atualização: algumas pessoas perguntaram por que essa correção funciona, então eu fiz um pouco de pesquisa sobre o tópico. Parece que eles usam tipos de conexão diferentes, conforme explicado neste post https://stackoverflow.com/a/9715164/1231563
O problema que surgiu aqui é que "localhost" usa um soquete UNIX e não consegue encontrar o banco de dados no diretório padrão. No entanto, "127.0.0.1" usa o TCP (Transmission Control Protocol), o que significa que ele é executado através da "internet local" no seu computador, sendo muito mais confiável do que o soquete UNIX nesse caso.
fonte
localhost
que não funciona e127.0.0.1
funciona?A Unix socket file is used if you do not specify a host name or if you specify the special host name localhost.
dev.mysql.com/doc/refman/5.7/en/can-not-connect-to-server.htmlEu tenho o mesmo problema e estou executando o Mac OS X 10.10 Yosemite. Eu habilitei o Apache Server e o PHP que já vem com o sistema operacional. Depois, apenas configurei a biblioteca mCrypt para começar. Depois disso, quando eu estava trabalhando com modelos e DB, recebi o erro:
A razão pela qual encontrei é apenas porque o PHP e o MySQL não podem se conectar. Para corrigir esse problema, sigo as próximas etapas:
Abra um terminal e conecte-se ao mysql com:
Ele solicitará a senha relacionada. Então, quando você obtiver o prompt do mysql, digite o seguinte comando:
Você obterá algo como isto:
Mantenha o valor da última linha:
Na
laravel
pasta do seu projeto, procure o arquivo database.php onde você configura os parâmetros de conexão do DB. Na seção mysql , adicione a próxima linha no final:Você deve ter algo como isto:
Agora basta salvar as alterações, recarregar a página e ela deve funcionar!
fonte
/Applications/MAMP/tmp/mysql/mysql.sock
Eu encontrei o
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
erro por um motivo diferente. Acabei de criar uma nova pilha LAMP no Ubuntu 12.04 com Apache 2.4.7, PHP v5.5.10 e MySQL 5.6.16. Voltei a mudar meus sites e os demiti. Mas não consegui carregar meu site baseado no Laravel 4.2.x por causa do[PDOException]
acima. Então, eu verifiqueiphp -i | grep pdo
e notei esta linha:Mas, no meu /etc/my.cnf, o arquivo sock está realmente dentro
/var/run/mysqld/mysqld.sock
.Então, eu abri meu php.ini e configurei o valor para
pdo_mysql.default_socket
:Então, reiniciei o apache e verifiquei
php -i | grep pdo
:Isso consertou para mim.
fonte
A resposta de @stuyam resolveu o problema "Não existe esse arquivo ou diretório" para mim
Mas tive um erro "Conexão recusada". Se alguém teve o mesmo problema, minha solução para isso foi atualizar o arquivo app / config / local / database.php para que a porta seja 8889:
fonte
'port' => '33060'
mas essa resposta me levou até lá!Se você estiver usando o Laravel Homestead, verifique se está chamando os comandos no servidor.
Em seguida, basta cd para o diretório certo e acionar seu comando lá.
fonte
source ~/.zshrc
2.homestead up --provision
3.homestead ssh
vagrant ssh
no meu casoNo meu caso, não tive nenhum problema, apenas esqueci de iniciar o serviço mysql ...
fonte
Mamp user enable option Permitir acesso de rede ao MYSQL
fonte
Adicione o caminho mysql.sock no arquivo database.php como no exemplo abaixo
Exemplo
fonte
Funcionou depois que mudei
DB_HOST=localhost
paraDB_HOST=127.0.0.1
para o arquivo .envfonte
localhost
que não funciona?Isso ocorre porque o DOP trata especialmente o host "localhost":
(em http://php.net/manual/en/ref.pdo-mysql.connection.php )
Alterar localhost para 127.0.0.1 "forçará" o uso do TCP.
Nota: mysqli_connect está funcionando bem com o localhost.
fonte
Com base na resposta de @dcarrith ...
Em vez de editar os arquivos de configuração, criei um alias no local que o PHP procura, que se conecta ao mysql.sock real. ( fonte )
Basta executar estes dois comandos (não é necessário reiniciar):
fonte
Passo 1
Encontre o caminho para o seu unix_socket, para isso basta executar
netstat -ln | grep mysql
Você deve obter algo parecido com isto
Passo 2
Pegue isso e adicione-o ao seu parâmetro unix_socket
Espero que ajude !!
fonte
Estou executando no MAMP Pro e tive esse problema semelhante ao tentar migrar (criar tabelas db). Tentei algumas dessas sugestões mencionadas também, mas não fez isso por mim.
Então, simplesmente (depois de uma hora pesquisando), adicionei duas coisas ao /config/database.php.
Funciona bem agora!
fonte
Verifique sua porta com cuidado. No meu caso, era 8889 e estou usando o 8888. altere "DB_HOST" de "localhost" para "127.0.0.1" e vice-versa
fonte
Eu tive esses problemas quando estava executando meu aplicativo usando contêineres de encaixe.
A solução foi colocar o nome do contêiner de serviço MySQL que eu estava usando no
docker_compose.yml
DB_HOST. No meu caso, foidb
:Espero que ajude.
fonte
No Laravel 5, o nome de usuário e a senha do banco de dados estão no arquivo .env existente no diretório do projeto, por exemplo
Como você pode ver, essas variáveis de ambiente estão substituindo as strings 'forge' aqui, portanto, alterá-las não tem efeito:
Mais informações estão aqui https://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables
fonte
Eu encontrei esse problema ao executar o PHPUnit no Elixir / Gulp e Homestead como meu ambiente do Vagrant.
No meu caso eu editei o arquivo .env a partir
DB_HOST=localhost
deDB_HOST=192.168.10.10
onde192.168.10.10
é o IP do meu anfitrião Vagrant / Homestead.fonte
Tente se conectar ao localhost:
Tente se conectar ao 127.0.0.1:
OK, basta comentar / remover a seguinte configuração do my.cnf (no OS X 10.5:)
/opt/local/etc/mysqlxx/my.cnf
para obter:Obviamente, pare e inicie o MySQL Server.
fonte
Eu tive problemas semelhantes ao acessar o site do Drupal. Corrigi-o abrindo a linha de comando e reiniciando meu servidor ou serviço MySQL:
Isso deve funcionar. Caso contrário, reinicie o servidor da web local:
Isso deve ser o suficiente. Espero que funcione para outros ambientes também. Observe que esses comandos geralmente requerem privilégios de superusuário.
fonte
Se você estiver usando o Laravel Homestead, aqui estão as configurações
(inclui máquina virtual Vagrant)
.bash-profile
database.php
terminal
fonte
Se alguém ainda estiver procurando a resposta, verifique seu arquivo .env. Por alguma razão, o laravel cria um arquivo .env.example, para que todas essas respostas não funcionem para mim. Corrigi meu problema renomeando .env.example para .env
fonte
Isso aconteceu comigo porque o MySQL não estava sendo executado. O MySQL falhou ao iniciar porque havia um
/usr/local/etc/my.cnf.d/
diretório ausente .Isso estava sendo exigido pelo meu
/usr/local/etc/my.cnf
arquivo de configuração como um glob include (include /usr/local/etc/my.cnf.d/*.cnf
).A execução
mkdir /usr/local/etc/my.cnf.d
e o MySQL foram corrigidos.fonte
No meu caso, eu estava executando o php artisan migrate no meu terminal mac, quando precisava ssh no vagrant e executá-lo a partir daí. Espero que ajude alguém a dor de cabeça.
fonte
Eu tive o mesmo problema ao usar o Docker e o nome do serviço MySQL
db
no arquivo docker_compose.yml:Eu adicionei o seguinte no
.env
arquivo:você também deve garantir que seu host possa ser descoberto no aplicativo php.
Foi porque o PHP não descobriu qual host usar para se conectar.
fonte
Ao usar um VirtualMachine, certifique-se de ssh nessa máquina, navegue até a pasta App e chame o comando php artisan migrate a partir daí.
fonte
Em maio, eu simplesmente usei
ao invés de
para minha instalação larval de forja usando a propriedade. Estou assumindo que isso significava que o site estava sendo veiculado, mas o servidor MySQL nunca foi inicializado. Quando usei o último comando para iniciar minha caixa de vagabundos, o erro desapareceu.
fonte
Todas essas respostas parecem pesadas ...
Acabei de criar um
.env
arquivo; editei meubootstrap/app.php
arquivo e descomentei a seguinte linha ...Dotenv::load(__DIR__.'/../');
Espero que isso ajude alguém
fonte
Para quem está tentando criar uma conexão db nova, não no laravel, mas se deparou aqui em busca de respostas para executar o PDO a partir do Terminal. Isso seria de ajuda para você. E você pode refatorá-lo para funcionar melhor para você.
espero que ajude!
fonte
No meu caso, tive que remover a pasta bootstrap / cache e tente novamente.
Meu cenário foi após uma migração de servidor.
fonte