我把它发布在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,以确定它的位置或将其移动到更方便的位置。