Symfony2/Doctrine2 - 在密码中转义特殊字符

3

我如何在Doctrine数据库连接中避免使用密码?

我的密码里有一个“@”符号,Symfony2会显示以下错误:

SQLSTATE[28000] [1045] Access denied for user 'user'@'server' (using password: YES)

密码是正确的,在其他地方都可以使用,但在我的Symfony2项目中却不行。


这个用户在数据库上有足够的权限吗? - Veve
@Veve 是的,权限没问题,所有连接数据都是正确的。 - KhorneHoly
这个用户在parameters.yml中也被正确地定义了吧? - Veve
你是用哪种格式来存储数据库凭据的?YAML吗? - Damaged Organic
1个回答

1

包含非字母数字字符的字符串可以使用单引号或双引号进行转义:

parameters:
    database_password: "my:pass@word!"

如果想使用以 "@" 开头的字符串,必须在前面添加另一个 "@" 进行转义,详见 The Book - Service Container

因此,如果您的密码是 "@mypassword":

parameters:
    password1: "@mypassword"  # Will not work
    password2: "@@mypassword" # Will work

这是必需的,因为以单个"@"开头的字符串被用作服务标识符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接