3

我尝试使用 composer 从 Symfony 3.1.8 升级到 3.2.1。在缓存清除期间,我收到一条错误消息

驱动程序中发生异常:SQLSTATE[HY000] [1045] 用户'########'@'IpAddress'的访问被拒绝(使用密码:YES)

但是我的数据库用户名应该是#######_#,注意倒数第二个字符位置的下划线。查看 parameter.yml 文件,我发现我的 database_user 已更改为从用户名中删除 _(下划线已被删除)。然后我添加了我的下划线,删除了开发缓存,并再次尝试了该应用程序。我收到与以前相同的错误。

由于 composer 还同时更新了学说和 FOSuser 包,所以我恢复了更新并通过恢复我的 composer.lock 文件返回到我之前的配置。然后我在 3.1.8 版本中再次运行了我的 Symfony 应用程序,它运行良好。

为了进一步隔离问题,我使用了 composer 并将仅 symfony 从 3.1.8 升级到 3.2.1。升级在缓存清除时产生错误并显示上述错误消息,并且在我的 parameters.yml 文件中,我的 database_user 再次从用户名中删除了下划线。我重新插入了下划线,但是我继续收到错误消息:

驱动程序中发生异常:SQLSTATE[HY000] [1045] 用户'########'@'IpAddress'的访问被拒绝(使用密码:YES)

如果我在我的 database_user 末尾添加一个字母,所以它是“#######_#a”,错误消息会显示 _

驱动程序中发生异常:SQLSTATE[HY000] [1045] 用户 '#######_#a'@'IpAddress' 的访问被拒绝(使用密码:YES)

如果我然后删除该字母,则错误消息将恢复为无下划线

驱动程序中发生异常:SQLSTATE[HY000] [1045] 用户'########'@'IpAddress'的访问被拒绝(使用密码:YES)

这让我相信 Symfony 在 3.1.8 和 3.2.1 之间的一些变化从 parameters.yml 文件中的 database_user 中去除了下划线。不幸的是,我不够熟练,无法弄清楚该代码可能在哪里。

4

1 回答 1

4

github的帮助和一些阅读的帮助下,我发现这与 Symfony 3.1(博客文章)中数值处理方式的变化有关。它们现在会自动从 yml 文件中的所有数字值中去除下划线字符。

但是在我的情况下,我的用户名(由我的网络托管公司提供)是所有数字,倒数第二个字符带有下划线,应该被解析为字符串。这现在被 Symfony 解释为一个数字(符合 YAML 规范),并且去掉了下划线。

为了解决这个问题,我在 yml 文件中简单地在我的用户名周围添加了引号,Symfony 开始正确处理该值并且我能够运行我的应用程序。

于 2017-01-02T18:24:28.073 回答