部署项目至服务器后配置.env数据库连接遇SQLSTATE[HY000] [2002]错误求助
错误原因排查与解决
核心问题:密码里的特殊字符未做URL编码
你的数据库连接URL中,密码包含#、[这类URL特殊字符,会打乱URL的解析逻辑:#在URL里是锚点标记,解析时会把#前面的wnpilxkx_yassine误判成数据库主机地址(而非用户名),这直接触发了getaddrinfo for wnpilxkx_yassine failed的错误。- 另外
[属于URL保留字符,同样需要编码才能被正确识别。
修复方法
- 将密码中的特殊字符替换为对应URL编码值:
#→%23[→%5B
原密码#QXKzJS[AvMP编码后变为%23QXKzJS%5BAvMP
- 修改后的配置行:
export DATABASE_URL="mysql://wnpilxkx_yassine:%23QXKzJS%5BAvMP@127.0.0.1:3306/wnpilxkx_easemploy" - 保存.env文件后重启应用服务,确保新配置生效。
- 将密码中的特殊字符替换为对应URL编码值:
额外验证建议
可以用服务器上的mysql命令行直接测试连接,确认数据库账号密码本身无问题:mysql -u wnpilxkx_yassine -p'#QXKzJS[AvMP' -h 127.0.0.1 -P 3306 wnpilxkx_easemploy如果命令行能成功连接,说明数据库本身正常,问题确实出在URL的特殊字符编码上。
内容的提问来源于stack exchange,提问作者maaha
相关产品推荐
相关产品推荐

