request.CRITICAL:PDOException:SQLSTATE [28000] [1045]在/ srv / inta / current / vendor /中拒绝用户“root”@“localhost”(使用密码:YES)(未捕获的异常) doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php第36行[] []
奇怪的是,我实际上可以使用root用户和提供的密码进行访问。通过控制台以root身份登录很有效。
我正在 app / config / 中使用以下 parameters.yml 文件
parameters:
database_driver: pdo_mysql
database_host: localhost
database_port: ~
database_name: int_apartments
database_user: root
database_password: pw goes here
mailer_transport: smtp
mailer_host: localhost
mailer_user: ~
mailer_password: ~
locale: en
secret: ThisTokenIsNotSoSecretChangeIt
正如您所看到的,它非常标准,仅更改了db的名称,用户和密码。
位于 app / config 中的 config.yml (相关部分)
imports:
- { resource: security.yml }
- { resource: parameters.yml }
...
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
dbname: int_apartments
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
mappings:
StofDoctrineExtensionsBundle: false
现在,我想从“步骤1”开始并验证parameters.yml文件实际上是否正在导入,因此我将主机更改为“localhos”或将用户更改为“tom”或其他任何位置并找到错误消息在 app / logs / prod.log 中保持原样 - 位置不会改变,用户也不会改变。
所以我查看了位于 app / config
中的 config_prod.ymlimports:
- { resource: config.yml }
#doctrine:
# metadata_cache_driver: apc
# result_cache_driver: apc
# query_cache_driver: apc
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
nested:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
......一切看起来都很标准!
所以这是快速版本。
(小)编辑: 我真正想要做的是作为一个完全不同的用户使用不同的密码连接到数据库。即使我在parameters.yml文件中输入不同的凭据,doctrine仍然会发出“root @ localhost”错误。
想法?
答案 0 :(得分:2)
愚蠢的错误,似乎是由于服务器上的用户/组/所有者配置错误。
app / cache目录由“root”拥有,但是当我运行时 app / console cache:clear --env = prod --no-debug 我作为另一个用户(不是root)运行。因此,在清除缓存方面存在问题,并且学说似乎一直使用位于缓存文件中的非常旧的配置。
经验教训:
答案 1 :(得分:1)
我通过重命名上传到prod_old的prod文件夹解决了我的问题,因为系统由于某种原因无法删除该文件夹。