Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用symfony和MAMP时发生PDO连接错误_Php_Mysql_Symfony1_Doctrine_Mamp - Fatal编程技术网

Php 使用symfony和MAMP时发生PDO连接错误

Php 使用symfony和MAMP时发生PDO连接错误,php,mysql,symfony1,doctrine,mamp,Php,Mysql,Symfony1,Doctrine,Mamp,尝试执行此操作时获取PDO错误 php符号原则:插入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/

尝试执行此操作时获取PDO错误
php符号原则:插入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 警告:PDO::_construct():[2002]连接被拒绝(尝试通过连接)tcp://127.0.0.1:3306)在第470行的/Users/johannes/Programmering/PHP/htdocs/symfony/sfprojects/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/doctrine/Connection.PHP中 数据库.yml

all: doctrine: class: sfDoctrineDatabase param: dsn: mysql:host=127.0.0.1;dbname=jobeet; username: root password: root 全部: 教条: 类别:sfDoctrineDatabase 参数: dsn:mysql:host=127.0.0.1;dbname=jobeet; 用户名:root 密码:root 使用“root”作为密码执行一个
mysql-uroot-pjobeet
,我就可以访问了,所以没有问题。是的,我运行的mysql是MAMP的


谢谢你的帮助。

看起来不错。以下是我正在使用的数据库.yml的精确等价物,以防有任何用途:

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

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

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

:

在Unix上,MySQL程序处理主机 以某种方式专门命名localhost 这可能与您所说的不同 与其他基于网络的 程序。连接到 localhost、MySQL程序试图 使用连接到本地服务器 Unix套接字文件。即使 为提供了--port或-P选项 指定端口号。确保 客户端建立TCP/IP连接 对于本地服务器,使用--host或-h 指定主机名值的步骤 127.0.0.1或本地服务器的IP地址或名称。你也可以 指定连接协议 通过 使用--protocol=TCP选项


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

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

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

MAMP PRO 3.x
如所述:

您真的需要这个零件吗<代码>;mysql:unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock我得到了一个错误,可以说将localhost更改为127.0.0.1修复了这个错误(我使用的是xampp),只是为了为可能遇到这个问题的任何其他人添加。如果您运行的是一个非标准的端口,比如MAMP(8889)for MySQL,那么即使您使用127.0.0.1,您仍然会遇到这个问题。在标准端口3306上运行修复了它。如果我找到要更改的地方,我会发回。但是我使用的是CodeIgniter 2和Doctrine 2,所以比较复杂。将主机从127.0.0.1更改为localhost,会出现以下错误
没有这样的文件或目录(尝试通过unix:///var/mysql/mysql.sock)
我认为我的答案和@Tom的答案都是正确的。只是您需要对MAMP进行一些额外的配置。您收到一条“没有这样的文件或目录”消息,因为MAMP将套接字保存在非默认位置。很好,使用
localhost
而不是127.0.0.1实现了这一点;无需在本地之外打开访问,因为@James suggestmap 3.0看起来有点不同,但本质上是相同的修复程序。选择“允许网络访问MySQL”>>”只从这个mac“