mysql - 通过 MySQL 套接字与 Zend Framework 连接

标签 mysql zend-framework sockets pdo

我最近开始使用 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/

相关文章:

apache - Zend Framework - 如何将 url 重写为 seo 友好的 url

c - socket(PF_INET, SOCK_RAW, AF_INET) 使用 IGMP?

c# - BinaryReader 的奇怪行为

php - 在 CodeIgniter 中设置状态

asp.net - Mono 的 XSP 网络服务器在 Linux 上找不到 MySql.Web.dll

mysql - 与 MyIsam 相比,InnoDB 行大小较大

php - Zend Framework 基于 URL 的翻译路径

php - Zend MultiCheckbox 输入属性

sockets - 套接字编程新手,关于 "select()"的问题

mysql - 如何使用动态Where子句编写查询