我收到类似使用Symfony2的数据库操作的错误。
SQLSTATE[HY000] [2002] Connection refused
parameters.yml
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: '8889'
database_name: symfony
database_user: root
database_password: root
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
locale: tr
secret: ef9b4381fe75208f060b7c786951242bebcfb3c2
database_path: /private/var/mysql/mysql.sock
和控制台:
Kemal-Karakass-MacBook-Pro:~ kemalkarakas$ locate mysql.sock
/private/var/mysql/mysql.sock
如何解决错误?
答案 0 :(得分:33)
我有同样的问题并修改了
database_host: 127.0.0.1
到
database_host: localhost
in parameters.yml
希望这有助于
答案 1 :(得分:13)
答案 2 :(得分:12)
您可以在config.yml中使用参数 unix_socket 。
请参阅完整配置示例:
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: %database_driver%
dbname: %database_name%
user: %database_user%
host: %database_host%
password: %database_password%
unix_socket: /tmp/mysql.sock
答案 3 :(得分:7)
我使用 MAMP 时遇到了同样的问题,因为默认端口不是3306
而是8889
。
您可以在MAMP起始网页中找到该信息。
我的参数
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: '8889'
database_name: symfony_blog
database_user: root
database_password: root
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
locale: en
secret: 7f03537e81f981683bc773b9ec7113ab5861adec
database_path: null
答案 4 :(得分:4)
这有点愚蠢但是我在这篇帖子上点击了同样的错误,所以也许这可以帮助别人。
如果你有这个连接拒绝错误,请仔细检查你的数据库是否正常运行,在我的情况下,我只是忘了启动MAMP ......
答案 5 :(得分:2)
在看到答案并自己玩弄之后我发现了问题:
LAMPP的默认安装,MAMPP在my.cnf文件中有以下内容:
skip-networking
这意味着mysql不会监听TCP / IP,因此您可以告诉doctrine尝试64K中的任何端口,并且在您注释掉上面的指令并获取mysql来侦听TCP / IP之前它不会有任何好处端口。
请确保在注释掉skip-networking
指令后重新启动LAMPP,MAMPP或重新加载mysql。
答案 6 :(得分:2)
如果在使用虚拟环境时仍有人遇到此问题,我发现您是否尝试在主机上运行数据库命令并遇到"connection refused"
错误,请尝试 ssh-into your guest machine 并直接运行命令,以便mysql.sock的路径正确。
(我认为相对路径需要在虚拟客户机上而不是主机上才有意义。)
答案 7 :(得分:2)
这个问题“SQLSTATE [HY000] [2002]没有这样的文件或目录”在部署上的symfony 3.2.9上
我通过在我的parameters.yml文件中将database_host值从“localhost”更改为我的服务器IP来修复它
但是在尝试通过SSH运行命令行时我收到了另一条错误消息:
[Doctrine\DBAL\Exception\ConnectionException]
An exception occured in driver: SQLSTATE[HY000] [2002] Connection refused
我最后通过在Doctrine配置部分的config.yml文件中添加这两行来修复它:
unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'
我所有的最终学说配置都是这样的:
doctrine:
dbal:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'
charset: UTF8
希望这有助于
答案 8 :(得分:1)
doctrine.dbal.path: %database_path%
app/config/config.yml
database_path
app/config/parameters.yml
app/config/parameters.yml
单引号中的任何值,也不会全部用双引号括起来。之后您的配置应如下所示:
<强>参数强>
# app/config/parameters.yml
parameters:
database_driver: "pdo_mysql"
database_host: "127.0.0.1"
database_port: "8889"
database_name: "symfony"
database_user: "root"
database_password: "root"
# comment out or remove
# database_path: ~
<强>配置强>
# app/config/config.yml
# ...
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
# path is for pdo_sqlite: i.e. %kernel.root_dir%/data/data.db3
# comment it out !
# path: ~
答案 9 :(得分:1)
在MAMP上运行,这是对我有用的/app/config/parameters.yml的配置:
parameters:
database_host: '127.0.0.1'
database_port: '8889'
database_name: test
database_user: root
database_password: root
我在database_host: localhost
失去了一段时间,但没有用。
初学者提示:
不要忘记删除分号;
以在php.ini中启用extension=php_pdo_mysql.dll
(在application / MAMP / conf / phpX.X.X中 - 检查MAMP设置中的当前版本)
和/或在Macintosh HD / private / etc中的php.ini和/或php.ini.default中(使用聚光灯搜索来查找此隐藏文件)。
答案 10 :(得分:1)
今天,在全新安装Symfony3时,我遇到了同样的错误:
SQLSTATE [HY000] [2002]权限被拒绝
安装规范:
izus的早期回答确实解决了我服务器上的问题。他建议在Symfony配置文件database_host
127.0.0.1
从localhost
更改为app/config/parameters.yml
问题的真正根源不在于Symfony配置,而是在数据库服务器内的授权。我通过执行以下SQL查询为此数据库创建了数据库和授权:
CREATE DATABASE user CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON database.* TO user@localhost IDENTIFIED BY 'password';
此查询仅表示主机&#39; localhost&#39;被授权。这不匹配&#39; 127.0.0.1&#39;究竟。数据库服务器拒绝接收连接,Symfony抛出异常并显示此错误消息。
针对这种特定情况的可能解决方案:
答案 11 :(得分:0)
在MAMP PRO中,我激活了“允许对mysql的网络访问”,而我的“ php artisan migration”正在为该特殊应用程序工作。