私はDBをsqliteからpostgresqlに移行しようとしています...だから私は入力しました:
Sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD 'newpassword';
出力はALTER ROLE
を返します
しかし、python manage.py migrate
と入力すると、常に同じエラーが表示されます。
Django.db.utils.OperationalError:FATAL:ユーザー「douglas」のパスワード認証に失敗しました
これは私のsettings.pyのデータベースセクションです。
# Old, using mysqlite
"""
DATABASES = {
#'default': {
# 'ENGINE': 'Django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#}
'default': dj_database_url.config(default='postgres://localhost:5432/postgres_db_name'),
}
"""
# New, using postgres
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.postgresql',
'NAME': 'douglas_db',
'USER': 'douglas',
'PASSWORD': 'vamointer',
'Host': '127.0.0.1',
'PORT': '5432',
}
}
注:「ALTER USER postgres WITH PASSWORD」を実行すると、settings.pyで定義されているのと同じパスワードが入力されます。
実行しているSQLは、使用しようとしているユーザーと一致しません。
ユーザーの作成 が存在しない場合は、次のようにする必要があります。
CREATE USER douglas WITH PASSWORD 'vamointer';
または、存在する場合は、代わりに そのユーザーのパスワードを変更します 。
ALTER USER douglas WITH PASSWORD 'vamointer';
それができたら、もっと運がいいはずです。 そのユーザーにアクセス許可を割り当てる も必要になる場合があります。
Postgresqlの特殊文字は、実行中に異なる文字に変換されます。パスワードに特殊文字(#、$など)が含まれていないことを確認してください。
その場合、次のようにpostgresqlのパスワードを変更します。
Sudo -u postgresql psql
postgresql=#ALTER USER yourusername WITH PASSWORD
'set_new_password_without_special_character';
Postgresqlコマンドの最後にある;
を忘れないでください。次にpython manage.py
を実行すると動作します!
私のように骨が折れていて、settings.pyのDjangoデータベース設定で、 'USER'の代わりに 'USERNAME'を使用している場合は、必ず 'USER'に変更してください。これと同じエラーを参照してください。