使用 symfony 和 MAMP 时出现 PDO 连接错误

Posted

技术标签:

【中文标题】使用 symfony 和 MAMP 时出现 PDO 连接错误【英文标题】:PDO connection error when using symfony and MAMP 【发布时间】:2011-06-14 17:46:04 【问题描述】:

尝试执行时收到 PDO 错误 php symfony doctrine:insert-sql 我得到的错误:

警告:PDO::__construct(): [2002] 连接被拒绝(试图通过 tcp://127.0.0.1:3306 连接)在 /Users/johannes/Programmering/PHP/htdocs/symfony/sfprojects/lib/vendor/symfony /lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php 在第 470 行

databases.yml

全部: 教义: 类:sfDoctrineDatabase 参数: dsn: mysql:host=127.0.0.1;dbname=jobeet; 用户名:root 密码:root

使用“root”作为密码的 mysql -u root -p jobeet 可以让我访问,所以没有问题。是的,我运行的 mysql 是 MAMP 的。

感谢您的帮助。

【问题讨论】:

你真的需要这部分吗? ;mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock 无论有无我都会收到错误 想说将 localhost 更改为 127.0.0.1 修复了它(我正在使用 xampp) 只是为可能遇到此问题的其他人添加。如果您正在为 MySQL 运行像 MAMP (8889) 这样的非标准端口,即使您使用 127.0.0.1,您仍然会遇到此问题。在标准端口 3306 上运行修复了它。如果我找到在哪里改变这个我会发回。但我使用的是 CodeIgniter 2 和 Doctrine 2,所以它有点复杂。 【参考方案1】:

MAMP PRO 2.x 通过在 MAMP 控制面板的 MySQL 首选项中取消选中“仅允许本地访问”,我能够解决这个问题和许多类似问题。

MAMP PRO 3.x 正如Kendrick 所说:

【讨论】:

MAMP 3.0 看起来有点不同,但基本上是相同的修复。选择“允许网络访问 MySQL”>>“仅来自本机”【参考方案2】:

默认情况下,MAMP 不允许 TCP 连接。您可以打开它或使用插座。

按照@Tom 的建议更改您的 dsn 应该可以解决您的问题。虽然很奇怪,但使用 localhost 而不是 127.0.0.1 使得 mysql 通过套接字连接。

http://dev.mysql.com/doc/refman/5.0/en/connecting.html

在 Unix 上,MySQL 程序处理主机 以某种方式特别命名 localhost 这可能与您的不同 与其他基于网络的期望相比 程式。对于连接到 localhost,MySQL 程序试图 通过使用连接到本地服务器 Unix 套接字文件。即使发生这种情况 一个 --port 或 -P 选项被赋予 指定端口号。以确保 客户端建立 TCP/IP 连接 到本地服务器,使用 --host 或 -h 指定主机名值 127.0.0.1,或本地服务器的 IP 地址或名称。你也可以 指定连接协议 明确地,即使对于本地主机,通过 使用 --protocol=TCP 选项。

【讨论】:

好吧,我认为我的回答和@Tom 的回答都是有效的。只是你需要对 MAMP 做一些额外的配置。您收到“没有这样的文件或目录”消息,因为 MAMP 将套接字保存在非默认位置。 很好,使用 localhost 而不是 127.0.0.1 就可以了;无需像@James 建议的那样在本地之外开放访问权限【参考方案3】:

尝试在 Symfony 中构建表并使用 MAMP 时,我遇到了同样的错误。我通过将 databases.yml 文件中的 dsn 行更改为以下内容来解决此问题:

dsn: 'mysql:host=localhost;dbname=jobeet;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock'

【讨论】:

【参考方案4】:

看起来不错。这将是我正在使用的工作 databases.yml 的完全等价物,以防它有任何用途:

dsn: 'mysql:host=localhost;dbname=jobeet'

【讨论】:

将主机从 127.0.0.1 更改为 localhost,给我这个错误 No such file or directory (尝试通过 unix:///var/mysql/mysql.sock 连接) 代码>

以上是关于使用 symfony 和 MAMP 时出现 PDO 连接错误的主要内容,如果未能解决你的问题,请参考以下文章

将数据库导入 phpMyAdmin (MAMP) 时出现 SQL 语法错误

在 Dreamweaver 中创建记录集时出现此错误 - 使用 MAMP

在 MAMP PRO 中运行 WP 主题时出现禁止错误

MAMP Pro 在系统清理后启动 SQL Server 时出现问题 [关闭]

尝试使用 symfony 创建 Web 服务时出现问题

MAMP Pro 和 PDO-dblib