mysql.sock problema no Mac OS X, todos os produtos Zend

2

Postei isso no fórum do Zend , mas Eu estou esperando que eu possa obter uma resposta mais rápida aqui. Eu tentei todas as soluções fornecidas neste fórum sem sorte. Quando eu reinicio o mysql, tudo parece ok.

sudo /usr/local/zend/bin/zendctl.sh restart 
Password:
/usr/local/zend/bin/apachectl stop [OK]
/usr/local/zend/bin/apachectl start [OK]
Stopping Zend Server GUI [Lighttpd] [OK]
spawn-fcgi: child spawned successfully: PID: 7943
Starting Zend Server GUI [Lighttpd] [OK]
Stopping Java bridge [OK]
Starting Java bridge [OK]
Shutting down MySQL
. SUCCESS! 
Starting MySQL
. SUCCESS! 

Ping locahost também é OK e resolve dns para IP.

ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.064 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.066 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.076 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.064 ms

Mas quando tento acessar o URL local do meu aplicativo, recebo o temido:

Mensagem: SQLSTATE [HY000] [2002] Não é possível conectar-se ao servidor MySQL local por meio do soquete '/tmp/mysql.sock' (2).

Este é um show-stopper para mim. Eu aprecio qualquer ajuda. Obrigado.

    
por Mike S. 19.12.2009 / 01:05

4 respostas

2

Você pode definir o local do soquete no arquivo de configuração do seu aplicativo. Se você configurá-lo para o seu ambiente de desenvolvimento local, adicionando a seguinte linha:

resources.db.params.unix_socket = /usr/local/zend/mysql/tmp/mysql.sock

Não é mais necessário vincular o soquete manualmente.

    
por 06.08.2011 / 15:23
1

A idéia do MySQL de localhost não é a idéia da IETF de localhost . Para o MySQL, localhost significa "um soquete Unix de localização aleatória", que é a causa da frustração sem fim (e, com toda a probabilidade, verrugas anais e aquecimento global). Se você quiser usar um socket Unix, então você precisa configurar o Zend para usar o socket correto (eu não sei como, ninguém parece ser capaz de decidir sobre um local padrão para o socket, nem uma maneira padrão de diga tudo onde estiver. Honestamente, basta alterar o endereço do seu servidor para 127.0.0.1 , o que significa "localhost, não, na verdade, não estou brincando, sim, o verdadeiro na rede" é uma maneira muito menos frustrante de ir (apenas certifique-se de ter dito MySQL para escutar na rede, removendo skip-networking ).

    
por 19.12.2009 / 02:02
1

Verifique o seu /etc/mysql/my.cnf e veja que socket está definido na sua seção [mysqld]. Em seguida, você pode alterá-lo para /tmp/mysql.sock ou apenas criar um link simbólico para onde ele é colocado, por exemplo,

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

É claro que a maioria dos * nix OS apagam / tmp no desligamento, então o primeiro método é provavelmente o melhor, a menos que você seja eu e pense que o socket não tem nenhum negócio em / tmp

E em uma nota lateral, você deve checar o framework Python Django , isso me deixou feliz em deixar o Zend Framework na poeira.

    
por 19.12.2009 / 05:40
0

A instalação padrão do Mac Zend cria o arquivo de soquete aqui:

/usr/local/zend/mysql/tmp/mysql.sock

Dê uma olhada na variável "socket" no seu arquivo "my.cnf" localizado em "/ usr / local / zend / mysql / data" para identificar onde ele está ou movê-lo para um local mais conveniente.

    
por 06.04.2010 / 23:06