尝试执行时出现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的。
感谢您的帮助。
答案 0 :(得分:13)
答案 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'