psycopg2.errors.InsufficientPrivilege: permission denied for schema public
LINE 1: CREATE TABLE "django_migrations" ("id" bigint NOT NULL PRIMA...
这是报错的内容。
原因是连接postgresql数据库的时候,使用的特定用户不具备相应的权限。
但问题在于我用的宝塔面板创建的,就只让我创建了那一个用户。
经过多方查找资料,以及询问大佬,得到原因。
即便用宝塔面板的postgresql管理器创建的,其实进行初始化的时候都是默认创建了一个名为"postgres"的超级用户的。
而这个超级用户其实没有密码,它需要登录服务器终端进行连接。使用
psql -U postgres -d dbname
这个命令进行登录(其中dbname是你自己的数据库名称)
如果提示没有psql这个命令,说明该工具没有加进环境变量。
使用
sudo find / -name psql
命令来查找名为psql的文件,找到了宝塔里面安装的psql的可执行程序,位于
/www/server/pgsql/bin/psql
接着就可以直接用它来执行
/www/server/pgsql/bin/psql -U postgres -d dbname
登录到这个账户里面之后,使用\du
命令能查看各个用户及所拥有的权限。
就像这样。
接着使用
alter user username with superuser;
这个命令,将用户修改为超级用户的权限。这里面的username
替换成你打算修改的用户名,切记不要忘了打分号,不然不起作用。
当这个用户具备超级用户的权限之后,再进入Django的目录下的命令行,重新输入
py manage.py migrate
就成功执行了。