我当前的Django项目已绑定到默认的SQLite DB。现在,我想迁移到Postgres。我已遵循此link
Postgres的安装没有任何问题。我遵循了网站中提到的完全相同的步骤:
使用“ postgres”用户登录。
signup()
创建数据库。
sudo -u postgres psql
创建用户并分配密码。
CREATE DATABASE myproject;
授予用户特权。
CREATE USER myprojectuser WITH PASSWORD 'password';
此后,我将以下属性添加到Django的settings.py中。
GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
现在,当我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
。
继续,当我执行一些postgres命令以检查环境时。我有下面的观察。
在Postgres shell中,我执行'\ l'来查看数据库。我在下面看到。
invalid password error
然后我执行'\ du'以查看用户状态。我在下面看到。
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
因此,从以上输出中,我假定目标数据库仍为默认的“ postgres”用户所有,对于新用户,我看不到任何角色属性。因为,默认“ postgres”用户仍然拥有目标数据库。因此,即使我在Django的settings.py文件中提到数据库名称,新用户及其密码。这行不通。这是我的理解。
因此,请提出在这种情况下的处理方法。
答案 0 :(得分:0)
您尝试吗?
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
答案 1 :(得分:0)
我能够将sqlite迁移到postgres。但是,作为一种解决方法,我使用了默认用户。并保留其设置的密码。我无法通过其他数据库用户连接到数据库。谢谢