in first: désolé pour ce doublon, mais les autres questions similaires relatives à ce problème indiquent toujours la même méthode pour résoudre ce problème, mais ne fonctionnent pas pour moi. J'essaie de migrer une base de données de sqlite vers postgresql ... alors J'écris:
Sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD 'newpassword';
et la sortie retourne: "ALTER ROLE"
mais quand je tape "python manage.py migrate", je reçois toujours la même erreur:
Django.db.utils.OperationalError: FATAL: authentification par mot de passe échoué pour l'utilisateur "douglas"
settings.py:
# Application definition
INSTALLED_APPS = [
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
'app',
]
MIDDLEWARE = [
'Django.middleware.security.SecurityMiddleware',
'Django.contrib.sessions.middleware.SessionMiddleware',
'Django.middleware.common.CommonMiddleware',
'Django.middleware.csrf.CsrfViewMiddleware',
'Django.contrib.auth.middleware.AuthenticationMiddleware',
'Django.contrib.messages.middleware.MessageMiddleware',
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'site_.urls'
TEMPLATES = [
{
'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'Django.template.context_processors.debug',
'Django.template.context_processors.request',
'Django.contrib.auth.context_processors.auth',
'Django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'site_.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
"""
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'),
}
"""
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.postgresql',
'NAME': 'douglas_db',
'USER': 'douglas',
'PASSWORD': 'vamointer',
'Host': '127.0.0.1',
'PORT': '5432',
}
}
# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
#DATABASES = {'default': dj_database_url.config(default='postgres://127.0.0.1:5432/postgres_db_name')}
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'Django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'Django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'Django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'Django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/
LANGUAGE_CODE = 'pt-br'
TIME_ZONE = 'America/Sao_Paulo'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
ps: Lorsque je lance le 'ALTER USER postgres WITH PASSWORD', je mets le même mot de passe défini dans le fichier settings.py.
Merci!
Le code SQL que vous exécutez ne correspond pas à l'utilisateur que vous tentez d'utiliser.
Vous devrez créer l'utilisateur s'il n'existe pas
CREATE USER douglas WITH PASSWORD 'vamointer';
ou s'il existe, changez le mot de passe de cet utilisateur à la place.
ALTER USER douglas WITH PASSWORD 'vamointer';
Une fois que vous avez fait cela, vous devriez avoir plus de chance. Vous devrez peut-être aussi attribuer des autorisations à cet utilisateur .
Les caractères spéciaux dans postgresql sont convertis en caractères différents lors de l'exécution. Assurez-vous de ne pas avoir de caractères spéciaux (#, $, etc.) dans votre mot de passe.
Si vous le faites, changez le mot de passe postgresql comme suit:
Sudo -u postgresql psql
postgresql=#alter yourusername with password
'set_new_password_without_special_character';
Assurez-vous de ne pas oublier le ;
à la fin de la commande postgresql. Puis lancez python manage.py
et ça devrait marcher!