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

Django迁移PostgreSQL遇public schema权限不足错误如何解决?

解决Django迁移PostgreSQL时的public schema权限错误

问题描述

执行python manage.py migrate时触发权限错误:

django.db.utils.ProgrammingError: permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" bigint NOT NULL PRIMA...

环境配置:

  • Windows 10系统
  • 本地部署PostgreSQL
  • Django项目依赖psycopg2,已配置PostgreSQL作为数据库

已完成操作:

  • 创建数据库tradingdb
  • 创建用户myuser并设置密码
  • 授予myuser数据库tradingdb的全部权限
  • 在settings.py中配置正确的数据库连接参数

原因分析

GRANT ALL PRIVILEGES ON DATABASE tradingdb TO myuser仅赋予了数据库层面的权限,但Django默认会在public schema下创建表,用户必须拥有该schema的操作权限才能执行建表等迁移动作。

解决步骤

  1. 登录PostgreSQL命令行,切换到目标数据库:
\c tradingdb;
  1. 授予用户public schema的全部权限:
GRANT ALL PRIVILEGES ON SCHEMA public TO myuser;
  1. (可选)为后续操作提前赋予schema内对象的权限:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myuser;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO myuser;
  1. 重新执行迁移命令:
python manage.py migrate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:32:35