我得到一个错误,如使用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
我该如何解决错误?
您可以在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
在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.XX中 - 在MAMP设置中检查当前版本)和/或在php.ini和/或php.ini中。在Macintosh HD / private / etc中默认(使用spotlight搜索来查找此隐藏文件)。
今天在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';
此查询表示仅授权主机“localhost”。这与'127.0.0.1'完全不符。数据库服务器拒绝接收连接,Symfony抛出异常并显示此错误消息。
这种特定情况的可能解决方案:
在MAMP PRO我激活了“允许网络访问mysql”,我的“php artisan migrate”现在正在为这个特殊的应用程序工作。
我遇到了同样的问题并修改了它
database_host: 127.0.0.1
至
database_host: localhost
在parameters.yml中
希望这会有所帮助
我使用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
这有点愚蠢,但我在谷歌搜索相同的错误,所以也许这可以帮助某人。
如果你有这个连接被拒绝错误,请仔细检查你的数据库是否正常运行,在我的情况下,我只是忘了启动MAMP ......
在看到答案并自己玩这个后,我发现了问题:
LAMPP的默认安装,MAMPP在my.cnf文件中有以下内容:
skip-networking
这意味着mysql不会监听TCP / IP,因此您可以告诉doctrine尝试64K中的任何端口,并且在您注释掉上面的指令并让mysql监听TCP / IP端口之前它不会有任何好处。
请确保在注释掉skip-networking
指令后重新启动LAMPP,MAMPP或重新加载mysql。
如果有人在使用虚拟环境时仍然遇到此问题,我发现如果您尝试在主机上运行数据库命令并遇到"connection refused"
错误,请尝试ssh到您的来宾计算机并直接运行命令,以便mysql.sock的路径是正确的。
(我想有意义的是,相对路径需要在虚拟客户机上,而不是主机上)。
在symfony 3.2.9上发布了这个问题“SQLSTATE [HY000] [2002]没有这样的文件或目录”
我通过在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
希望这会有所帮助
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: ~