为什么我不能迁移到Postgres DB?

时间:2020-08-24 05:57:55

标签: django postgresql

我当前的Django项目已绑定到默认的SQLite DB。现在,我想迁移到Postgres。我已遵循此link

Postgres的安装没有任何问题。我遵循了网站中提到的完全相同的步骤:

  1. 使用“ postgres”用户登录。

    signup()
  2. 创建数据库。

    sudo -u postgres psql
    
  3. 创建用户并分配密码。

     CREATE DATABASE myproject;
    
  4. 授予用户特权。

    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文件中提到数据库名称,新用户及其密码。这行不通。这是我的理解。

因此,请提出在这种情况下的处理方法。

2 个答案:

答案 0 :(得分:0)

您尝试吗?

   DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'myproject',
            'USER': 'myprojectuser',
            'PASSWORD': 'password',
            'HOST': 'localhost',
            'PORT': '5432',
        }
    }

答案 1 :(得分:0)

我能够将sqlite迁移到postgres。但是,作为一种解决方法,我使用了默认用户。并保留其设置的密码。我无法通过其他数据库用户连接到数据库。谢谢