You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RuntimeWarning数据库'default'迁移历史校验报错该如何解决?

数据库迁移fe_sendauth: no password supplied报错解决方案

错误成因

该报错是PostgreSQL数据库专属的连接凭证错误,触发逻辑及附带No changes detected输出的原因如下:

  • 本质原因:迁移工具执行前需要先连接default配置对应的数据库,校验本地迁移文件与数据库中存储的迁移历史是否一致,此时连接请求没有携带合法的密码凭证,被PostgreSQL服务端拒绝,触发对应警告
  • 具体触发场景:
    • 项目数据库配置文件中default连接的PASSWORD配置项漏写,或赋值为空
    • 密码通过环境变量注入时,运行迁移命令的shell环境未加载对应环境变量,或环境变量名拼写错误导致读取到空值
    • 运行迁移时误加载了生产/测试环境的配置,这类环境的数据库密码一般是专属环境变量,本地开发环境没有对应值
    • PostgreSQL的pg_hba.conf配置中将你当前连接的IP/用户的认证规则设置为password/md5/scram-sha-256,强制要求密码验证,无密码请求会被直接拦截
  • 附带No changes detected说明:迁移历史校验环节先于模型变更检测执行,校验失败后工具直接终止后续流程,不会实际检测模型是否有变更,该输出不代表真的没有待迁移的变更。

排查与解决方法

  • 校验本地数据库配置:找到项目的数据库配置文件(比如Django的settings.py、Flask的config.py),确认default连接的PASSWORD字段已配置正确值,参考Django的合法配置示例:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '你的数据库名',
        'USER': '你的数据库用户名',
        'PASSWORD': '你的数据库密码',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}
  • 验证环境变量加载状态:如果密码是从环境变量读取(比如os.getenv('DB_PASSWORD')),运行迁移前先在当前shell执行对应命令验证变量值:
    • Linux/macOS执行:echo $DB_PASSWORD
    • Windows cmd执行:echo %DB_PASSWORD%
      若输出为空,先执行导出操作再运行迁移,比如Linux/macOS下执行export DB_PASSWORD=你的真实数据库密码
  • 确认配置加载路径:运行迁移时指定对应的环境配置,避免误加载其他环境的配置,比如Django可通过参数指定配置文件:python manage.py migrate --settings=项目名.settings.local
  • 直连排查数据库问题:用psql客户端尝试用相同的连接信息直连数据库,验证账号密码是否有效:psql -h 数据库地址 -p 端口 -U 用户名 数据库名,按提示输入密码后如果依然连接失败,说明账号密码本身错误,或者你的IP不在数据库白名单内
  • 开发环境临时适配:如果是本地开发场景,可修改PostgreSQL的pg_hba.conf配置,将本地连接的认证方式改为trust(仅允许开发环境使用,生产环境严禁该配置),修改后重启PostgreSQL服务即可免密码连接本地数据库。

内容的提问来源于stack exchange,提问作者emmanuel odor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:27:05