【问题标题】:django.db.utils.OperationalError: FATAL: database "library" does not existdjango.db.utils.OperationalError:致命:数据库“库”不存在
【发布时间】:2020-07-23 05:22:42
【问题描述】:

我正在尝试使用 docker 将我的项目与 postgres 数据库连接。当我使用默认的 postgres 设置时它工作正常

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

但是当我尝试使用 postgre admin 创建数据库并想在我的 django 项目中使用它时,它会显示错误。 我的 Dockerfile:

Dockerfile
# Pull base image
FROM python:3.7
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
# Copy project
COPY . /code/

数据库的settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'library',
        'USER': 'postgres',
        'PASSWORD': 'my_password',
        'HOST': 'db',
        'PORT': 5432
    }
}

还有 docker-compose.yml

docker-compose.yml
version: '3.7'
    
services:
  db:
    hostname: db
    image: postgres:11
    environment:
      - POSTGRES_DB=library
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=my_password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
volumes:
  postgres_data:

【问题讨论】:

    标签: django postgresql docker


    【解决方案1】:

    当 postgres 映像首次启动并且没有数据时,它将创建一个名为 POSTGRES_DB 环境变量的数据库。

    您已经在卷中创建了一个数据库。您应该删除 postgres_data 卷并重新启动,以便创建具有新名称的数据库。将-v 传递给docker-compose down 以删除任何卷

    docker-compose down -v
    docker-compose up -d
    

    【讨论】:

      猜你喜欢
      • 2015-07-28
      • 1970-01-01
      • 2012-06-07
      • 2023-03-04
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      相关资源
      最近更新 更多