Mac OS X上的mysql.sock问题,所有的Zend产品

我把它发布在Zend论坛上 ,但是我希望能在这里得到更快的回复。 我已经尝试了这个论坛提供的每个解决scheme,没有运气。 当我重新启动MySQL,一切似乎确定。

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! 

Pinging locahost也可以,并将dnsparsing为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 

但是,当我尝试访问我的应用程序的本地URL时,我得到了可怕的:

消息:SQLSTATE [HY000] [2002]无法通过套接字'/tmp/mysql.sock'(2)连接到本地MySQL服务器。

这对我来说是一个阻碍。 我感谢任何帮助。 谢谢。

您可以在应用程序configuration文件中设置套接字位置。 如果通过添加以下行将其设置为本地开发环境:

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

不再需要手工连接套接字。

MySQL的localhost思想不是IETF的localhost思想。 对于MySQL来说, localhost意思是“一个随机位置的Unix套接字”,这是造成无尽挫折(很可能是肛门疣和全球变暖)的原因。 如果你想使用Unix套接字,那么你需要configurationZend来使用正确的套接字(我不知道如何,没有人能够确定套接字的标准位置,也没有标准的方法告诉其他所有的地方)。 老实说,只是改变你的服务器地址127.0.0.1 ,这意味着“本地主机,没有真正的,我不是在开玩笑,是的,真正的networking上”是一个更不容易的方式去(只要确保你已经告诉MySQL本身通过删除skip-networkingnetworking来监听skip-networking )。

检查你的/etc/mysql/my.cnf ,看看在你的[mysqld]部分下面设置了什么套接字。 然后,您可以将其更改为/tmp/mysql.sock,或者只是将其设置为符号链接,例如

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

当然,大多数* nix操作系统的关机/ tmpclosures所以第一种方法可能是最好的,除非你是我,认为套接字没有业务在/ tmp

另外,请注意,您应该查看Python框架Django ,它让我高兴地离开了Zend Framework。

默认的Mac Zend安装在这里创build套接字文件:

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

看一看位于“/ usr / local / zend / mysql / data”中的“my.cnf”文件中的“socket”variables,以确定它的位置或将其移动到更方便的位置。