今天我上传了Symfony2到远程服务器,我得到了以下错误....
致命错误:带有消息的未捕获异常'PDOException' 'SQLSTATE [HY000] [1045]用户'root'@'localhost'拒绝访问 (使用密码:NO)'in /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43 堆栈跟踪:#0 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(43): PDO-> __ construct('mysql:host = 127 ....','root',NULL,Array)#1 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php(45): 教义\ DBAL \驱动\ PDOConnection-> __构建体( 'MySQL的:主机= 127 ....', 'root',NULL,Array)#2 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(360): Doctrine \ DBAL \ Driver \ PDOMySql \ Driver-> connect(Array,'root',NULL, 数组)#3 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): Doctrine \ DBAL \ Connection-> connect()#4 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine \ DBAL \ Connection-> getDatabasePlatformVersion()#5 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine \ DBAL \ Connection->中 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php 在第103行
但我在parameters.yml中的MySQL用户与“root”不同,我通过CGI成功创建了数据库模式。当用户不同时,为什么Symfony2尝试连接“root”?
答案 0 :(得分:0)
您app.php(或app_dev.php)上的环境配置将决定Symfony将加载哪个配置。如果您处于生产模式(prod),则所有配置都将被app / config / config_prod.yml中的任何内容覆盖。
你可能在那里有一些覆盖你的config.yml中的连接细节?
答案 1 :(得分:0)
有两个可能的原因。
首先,远程服务器上的 parameters.yml 是不同的。当您执行 composer.phar install 时,它会被覆盖,如果您当然这样做,并且有一个任务将 parameters.yml.dist 复制到新的 parameters.yml < / strong>文件。这是因为,版本控制系统中通常会忽略parameters.yml文件。
其次,您需要查看 config.yml , config _ *。yml 文件。 config _ *。yml 文件会覆盖您的 config.yml 文件。因此,数据库连接参数可能是硬编码的,而不是来自 parameters.yml 。您应该查看以下参数。具体为用户,密码字段。你可以看到它的硬编码。不读取 parameters.yml 文件。
doctrine:
dbal:
default_connection: default
types:
# A collection of custom types
# Example
some_custom_type:
class: Acme\HelloBundle\MyCustomType
commented: true
# If enabled all tables not prefixed with sf2_ will be ignored by the schema
# tool. This is for custom tables which should not be altered automatically.
#schema_filter: ^sf2_
connections:
# A collection of different named connections (e.g. default, conn2, etc)
default:
dbname: ~
host: localhost
port: ~
user: root
password: ~
charset: ~
path: ~
memory: ~
答案 2 :(得分:0)
好的,我被清除了缓存,一切正常。