django - 为什么我无法迁移到 postgres DB?
问题描述
我当前的 Django 项目绑定到默认的 SQLite DB。现在,我想迁移到 Postgres。我已经关注了这个链接
Postgres 的安装没有任何问题。我遵循了网站中提到的完全相同的步骤:
使用“postgres”用户登录。
sudo -u postgres psql
创建数据库。
CREATE DATABASE myproject;
创建用户并分配密码。
CREATE USER myprojectuser WITH PASSWORD 'password';
授予用户权限。
GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
在此之后,我将以下属性添加到我的 Django 的 settings.py 中。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'DB_name',
'USER': 'new_User_name',
'PASSWORD': 'new_user_password',
'HOST': '',
'PORT': '',
}
}
现在,当我这样做时,python manage.py makemigrations
我得到invalid password error
.
展望未来,当我执行一些 postgres 命令来检查环境时。我有以下观察。
在 Postgres shell 中,我执行 '\l' 来查看数据库。我在下面看到。
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------------------+----------+----------+---------+---------+--------------------------------
DB_Name | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | new_User_name=CTc/postgres
然后我执行 '\du' 来查看用户状态。我在下面看到。
postgres=# \du
List of roles
Role name | Attributes | Member of
-------------------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
new_User_name | | {}
因此,从上面的输出中,我假设目标数据库仍由默认的“postgres”用户拥有,而对于新用户,我看不到任何角色属性。因为,目标数据库仍然由默认的“postgres”用户拥有。因此,即使我在 Django 的 settings.py 文件中提到了数据库名称、新用户及其密码。它行不通。这是我的理解。
因此,请建议在这种情况下如何进行。
解决方案
我能够将我的 sqlite 迁移到 postgres。但作为一种解决方法,我使用了默认用户。并休息其设置密码。我无法通过其他数据库用户连接到数据库。谢谢
推荐阅读
- android - 如何让android模拟器连接到我们服务器上的特定端口
- botframework - 有没有办法在机器人框架中垂直堆叠建议的操作?
- three.js - AR.js 和 aframe 管理我的 .gltf 位置和尺寸
- javascript - How to do component inheritance in React Native like on native platform?
- reactjs - 使用映射数据切换组件
- r - 如何从数据框名称中提取信息并基于它创建列
- here-api - HERE Map:如何知道图层的渲染状态?
- unity3d - 在 Unity 中缩小后 3d 模型变黑
- github - 如何在 github 页面中使用托管域
- web-scraping - 网络抓取 EconPapers 存储库的问题