Symfony 3.2.1 从 yml 文件值中删除下划线
Symfony 3.2.1 removes underscore from yml file value
我尝试使用 Composer 从 Symfony 3.1.8 升级到 3.2.1。在清除缓存期间,我收到一条错误消息
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied
for user '########'@'IpAddress' (using password: YES)
但是我的数据库用户名应该是#######_#,请注意倒数第二个字符位置的下划线。查看 parameter.yml 文件,我发现我的 database_user 已更改为从用户名中删除 _(下划线被删除)。然后我加回我的下划线,删除开发缓存,并再次尝试应用程序。我收到了和以前一样的错误。
由于 composer 还同时更新了 doctrine 和 FOSuser 包,因此我恢复了更新并通过恢复我的 composer.lock 文件回到了我之前的配置。然后我 运行 我的 Symfony 应用程序在版本 3.1.8 中再次运行并且它运行良好。
为了进一步隔离问题,我使用了 composer 并将 symfony 从 3.1.8 升级到 3.2.1。升级在清除缓存时产生错误并显示上述错误消息,在我的 parameters.yml 文件中,我的 database_user 再次从用户名中删除了下划线。我重新插入了下划线,但是我继续收到错误消息:
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied
for user '########'@'IpAddress' (using password: YES)
如果我在 database_user 的末尾添加一个字母,所以它是“#######_#a”,错误消息显示 _
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied
for user '#######_#a'@'IpAddress' (using password: YES)
如果我随后删除该字母,错误消息将恢复为无下划线
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied
for user '########'@'IpAddress' (using password: YES)
这让我相信 Symfony 在 3.1.8 和 3.2.1 之间的某些变化会从 parameters.yml 文件中的 database_user 去除下划线。不幸的是,我不够熟练,无法弄清楚该代码可能在哪里。
在 github and a bit of reading I found that this is related to changes in how numeric values are handled in Symfony 3.1 (Blog Post 的帮助下)。它们现在自动从 yml 文件中的所有数字值中去除下划线字符。
但是在我的例子中,我的用户名(由我的网络托管公司提供)都是倒数第二个字符带有下划线的数字,应该被解析为一个字符串。这现在被 Symfony(符合 YAML 规范)解释为数字并且下划线被去除。
为了解决这个问题,我只是在 yml 文件中为我的用户名添加引号,Symfony 开始正确处理该值,我能够 运行 我的应用程序。
我尝试使用 Composer 从 Symfony 3.1.8 升级到 3.2.1。在清除缓存期间,我收到一条错误消息
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied for user '########'@'IpAddress' (using password: YES)
但是我的数据库用户名应该是#######_#,请注意倒数第二个字符位置的下划线。查看 parameter.yml 文件,我发现我的 database_user 已更改为从用户名中删除 _(下划线被删除)。然后我加回我的下划线,删除开发缓存,并再次尝试应用程序。我收到了和以前一样的错误。
由于 composer 还同时更新了 doctrine 和 FOSuser 包,因此我恢复了更新并通过恢复我的 composer.lock 文件回到了我之前的配置。然后我 运行 我的 Symfony 应用程序在版本 3.1.8 中再次运行并且它运行良好。
为了进一步隔离问题,我使用了 composer 并将 symfony 从 3.1.8 升级到 3.2.1。升级在清除缓存时产生错误并显示上述错误消息,在我的 parameters.yml 文件中,我的 database_user 再次从用户名中删除了下划线。我重新插入了下划线,但是我继续收到错误消息:
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied for user '########'@'IpAddress' (using password: YES)
如果我在 database_user 的末尾添加一个字母,所以它是“#######_#a”,错误消息显示 _
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied for user '#######_#a'@'IpAddress' (using password: YES)
如果我随后删除该字母,错误消息将恢复为无下划线
An exception occured in driver: SQLSTATE[HY000] [1045] Access denied for user '########'@'IpAddress' (using password: YES)
这让我相信 Symfony 在 3.1.8 和 3.2.1 之间的某些变化会从 parameters.yml 文件中的 database_user 去除下划线。不幸的是,我不够熟练,无法弄清楚该代码可能在哪里。
在 github and a bit of reading I found that this is related to changes in how numeric values are handled in Symfony 3.1 (Blog Post 的帮助下)。它们现在自动从 yml 文件中的所有数字值中去除下划线字符。
但是在我的例子中,我的用户名(由我的网络托管公司提供)都是倒数第二个字符带有下划线的数字,应该被解析为一个字符串。这现在被 Symfony(符合 YAML 规范)解释为数字并且下划线被去除。
为了解决这个问题,我只是在 yml 文件中为我的用户名添加引号,Symfony 开始正确处理该值,我能够 运行 我的应用程序。