Symfony执行psql报错:PATH未找到及密码认证失败求助
解决Symfony执行
symfony run psql的两类错误 一、搞定“exec: "psql": executable file not found in %PATH%”
- 确认PostgreSQL的
bin路径正确性:你用的9.3版本,路径C:\Program Files\PostgreSQL\9.3\bin得确实存在——检查下是不是装到其他盘、或者版本号输错了 - 环境变量改完必须重启终端:Windows环境变量修改后,当前打开的终端不会立刻生效,得把所有终端/IDE关掉重开再试命令
- 验证PATH是否生效:新开终端执行
where psql,如果能返回psql.exe的完整路径,说明配置成了;要是不行,把路径加到系统变量而非用户变量(部分场景下用户变量优先级不够)
二、解决“psql: FATAL: password authentication failed for user "app"”
这个问题和DATABASE_URL、PostgreSQL用户配置直接相关,按以下步骤排查:
- 核对DATABASE_URL参数
你的DATABASE_URL格式应该是postgresql://app:你的密码@127.0.0.1:5432/你的数据库名?serverVersion=9.3&charset=utf8,要确保:- PostgreSQL里确实存在
app这个用户 - URL里的密码和你给
app用户设置的完全一致(注意大小写、特殊字符要URL编码,比如密码里的@、#得转义)
- PostgreSQL里确实存在
- 检查PostgreSQL用户权限
从开始菜单打开PostgreSQL 9.3的SQL Shell,用超级用户postgres登录(密码是你装PostgreSQL时设的),执行以下命令:-- 检查是否存在app用户 SELECT usename FROM pg_user WHERE usename = 'app'; -- 不存在就创建用户并设密码 CREATE USER app WITH PASSWORD '你的密码'; -- 给用户赋予目标数据库的全部权限 GRANT ALL PRIVILEGES ON DATABASE 你的数据库名 TO app; - 调整PostgreSQL认证策略(可选)
要是上面的步骤都没用,可能是认证规则的问题:- 找到PostgreSQL安装目录下的
data/pg_hba.conf文件(比如C:\Program Files\PostgreSQL\9.3\data\pg_hba.conf) - 找到
host all all 127.0.0.1/32 md5这一行,确保是md5(Windows默认是这个,但可能被修改成了peer或trust) - 修改后重启PostgreSQL服务:Win+R输入
services.msc,找到postgresql-x64-9.3服务,右键重启
- 找到PostgreSQL安装目录下的
附:核对doctrine.yaml配置
确保config/packages/doctrine.yaml里的数据库配置和DATABASE_URL一致,示例如下:
doctrine: dbal: url: '%env(resolve:DATABASE_URL)%' # 其他DBAL配置... orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware auto_mapping: true mappings: App: is_bundle: false dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App
内容的提问来源于stack exchange,提问作者Ithril Laydec
相关产品推荐
相关产品推荐

