【问题标题】:Symfony 3.2.1 removes underscore from yml file valueSymfony 3.2.1 从 yml 文件值中删除下划线
【发布时间】:2017-01-02 18:24:28
【问题描述】:

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

驱动发生异常:SQLSTATE[HY000] [1045] Access denied 对于用户'########'@'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] Access denied 对于用户'########'@'IpAddress'(使用密码:YES)

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

驱动发生异常:SQLSTATE[HY000] [1045] Access denied 对于用户'#######_#a'@'IpAddress'(使用密码:YES)

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

驱动发生异常:SQLSTATE[HY000] [1045] Access denied 对于用户'########'@'IpAddress'(使用密码:YES)

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

【问题讨论】:

    标签: php symfony symfony-3.1


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 2019-11-25
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2012-05-27
      • 1970-01-01
      相关资源
      最近更新 更多