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

时间:2011-01-24 19:17:15

标签: php mysql symfony1 doctrine mamp

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

Warning: PDO::__construct(): [2002] Connection refused (trying to connect via tcp://127.0.0.1:3306) in /Users/johannes/Programmering/PHP/htdocs/symfony/sfprojects/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470

databases.yml里

    all:
    doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: mysql:host=127.0.0.1;dbname=jobeet;
      username: root
      password: root

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

感谢您的帮助。

4 个答案:

答案 0 :(得分:13)

MAMP PRO 2.x
我只需取消选中MAMP控制面板上MySQL prefs中的“仅允许本地访问”即可解决此问题和许多类似问题。

enter image description here

MAMP PRO 3.x
正如Kendrick所述: enter image description here

答案 1 :(得分:7)

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

更改你的dsn @Tom建议应该解决你的问题。虽然很奇怪但是使用 localhost 而不是 127.0.0.1 会使mysql通过套接字连接。

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

  

在Unix上,MySQL程序会对待主机   在某种程度上特别命名localhost   这可能与你的不同   期望与其他基于网络的相比   程式。用于连接   localhost,MySQL程序试图   使用a连接到本地服务器   Unix套接字文件。即使这发生了   给出了--port或-P选项   指定端口号。为了确保   客户端建立TCP / IP连接   到本地服务器,使用--host或-h   指定主机名值   127.0.0.1,或本地服务器的IP地址或名称。你也可以   指定连接协议   明确地,甚至对于localhost来说   使用--protocol = TCP选项。

答案 2 :(得分:3)

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

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

答案 3 :(得分:1)

看起来正确。这将是我正在使用的工作databases.yml的完全等价物,万一它有用:

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