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的操作权限才能执行建表等迁移动作。
解决步骤
- 登录PostgreSQL命令行,切换到目标数据库:
\c tradingdb;
- 授予用户
publicschema的全部权限:
GRANT ALL PRIVILEGES ON SCHEMA public TO myuser;
- (可选)为后续操作提前赋予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;
- 重新执行迁移命令:
python manage.py migrate
内容的提问来源于stack exchange,提问作者Needa
相关产品推荐
相关产品推荐

