我最近开始使用 Zend Framework。我开始在我的本地 XAMPP 服务器上开发,一切正常,但是当我上传到我的 1and1 帐户时,我不断收到以下错误:
Message: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
我曾尝试将 application.ini 文件中的 resources.db.params.unix_socket 行更改为 phpinfo 中提到的不同行,但没有成功。我找到了 here有人回答
Is the MySQL server on the same host as the web application? If not, you can't use a socket connection, and will need to connect via TCP.
我认为我的虚拟主机就是这种情况。如何更改 ZF 以改为通过 TCP 连接?我目前正在使用 PDO_MYSQL。
最佳答案
如何连接到 MySQL 取决于您传递给 mysql_connect() 的参数.如果你传递一个文件路径,即。 /var/run/mysqld/mysqld.sock
,它将尝试套接字连接。如果您向它传递主机名,它将尝试建立 TCP 连接。
您需要找到 mysql 服务器的主机名(或 IP),然后像这样连接到它:
mysql_connect('127.0.0.1:3306',$用户名,$密码);
ZF 的赔率,您可以在存储数据库设置的配置文件中指定它,或者当您使用 host
设置连接到数据库时:
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
编辑:如果您将正确的主机名/端口作为主机参数传递给 mysql_connect()
并收到此消息,那么它很可能是服务器配置问题。
尝试调整 mysql.default_socket
设置,在 php.ini 中或在您的应用程序代码顶部使用 ini_set()
ini_set('mysql.default_socket','/path/to/real/socket.sock');
你必须弄清楚套接字文件在哪里。通常是“/var/lib/mysql/mysql.sock”,但我认为它取决于系统。
关于mysql - 通过 MySQL 套接字与 Zend Framework 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235598/