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

Django执行makemigrations报错psycopg2权限不足问题求助

我来帮你解决这个Django迁移的权限问题!看起来问题的核心是你的数据库用户fishercoderuser没有在public schema下创建新表的权限,也没有针对未来创建对象的默认权限——你之前执行的GRANT ALL ON ALL TABLES...只对已经存在的表生效,而Django需要创建django_migrations这类系统表时就会触发权限错误。

跟着来做以下步骤:

1. 给用户添加Schema级别的创建权限

首先用postgres超级用户登录到fishercoder数据库:

psql -U postgres fishercoder

然后执行命令,赋予fishercoderuser在public schema下创建表的权限:

GRANT CREATE ON SCHEMA public TO fishercoderuser;

2. 设置默认权限(关键!)

这一步是确保未来在public schema下创建的所有表、序列、函数都会自动赋予fishercoderuser权限,避免后续再遇到类似问题:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO fishercoderuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO fishercoderuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON FUNCTIONS TO fishercoderuser;

3. 验证权限并重新执行迁移

退出psql(输入\q回车),然后可以重启PostgreSQL服务确保权限生效:

sudo service postgresql restart

回到你的Django项目目录,先执行迁移创建必要的系统表:

./manage.py migrate

之后再执行makemigrations就不会有问题了:

./manage.py makemigrations

补充说明

你之前查询不到django_migrations表是正常的——因为你导入的是第三方SQL备份,里面本来就没有Django的系统表,Django需要通过migrate命令来创建这些表。之前的权限错误是因为fishercoderuser没有权限创建这个表,错误信息虽然看起来是“查询权限不足”,但核心还是没有创建新表的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:47:28