gpt4 book ai didi

postgresql - Docker容器中的Postgresql版本与其数据不兼容

转载 作者:行者123 更新时间:2023-12-02 19:52:36 40 4
gpt4 key购买 nike

Mac OS 10.13.6
docker 9.03.5,内部版本633a0ea

我使用docker-compose.yml创建了两个docker容器,即web和db。它工作了几个月。最近,我决定从头开始重建容器,因此我实际上删除了现有容器并重新开始:

$ docker-compose  -f docker-compose-dev.yml build --no-cache
$ docker-compose -f docker-compose-dev.yml up -d

在“build”运行期间,生成db容器将产生以下结果:

DETAIL: The data directory was initialised by PostgreSQL version 9.6, which is not compatible with this version 11.2.

exited with code 1



db容器无法启动,因此我无法检查其内部内容。

我的容器
定义如下:
version: '3'

services:
web:
restart: unless-stopped
container_name: web
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "8000:8000"
environment:
DJANGO_SETTINGS_MODULE: '<my_app>.settings.postgres'
DB_NAME: 'my_db'
DB_USER: 'my_db_user'
DB_PASS: 'my_db_user'
DB_HOST: 'my_db_host'
PRODUCTION: 'false'
DEBUG: 'True'
depends_on:
- db
volumes:
- ./:/usr/src/app/
db:
image: postgres:11.2-alpine
volumes:
- myapp-db-dev:/var/lib/postgresql/data
environment:
- POSTGRES_DB=<my_db>
- POSTGRES_USER=<my_db_user>
- POSTGRES_PASSWORD=<my_db_password>
volumes:
myapp-db-dev:

我的本地postgresql是11.3(应该无关紧要):
$ psql --version
psql (PostgreSQL) 11.3

并且我的本地postgresql数据目录已完全删除
$ rm -rf /usr/local/var/postgres

但是,它是最新的:
$ brew postgresql-upgrade-database
Error: postgresql data already upgraded!

我读了 Stack Overflow 17822974Stack Overflow 19076980,这些建议没有帮助。

如何解决此数据不兼容的问题?如果可能的话,我想避免降级postgres。我什至没有得到它正在谈论的数据,所有数据稍后将在单独的步骤中迁移。

最佳答案

似乎在第一次运行时,将Postgres 9.6指定为图像。因此,容器被初始化并将数据放入名为volume的myapp-db-dev中。然后有人更改了版本,您遇到了错误。可能的解决方案是:

  • 暂时将版本降级到Postgres 9.6,例如指定postgres:9.6
  • 转到容器并使用pg_dump实用程序转储数据。
  • 将版本更改为11.2并指定新的卷(使用主机卷是一个很好的建议)。
  • 恢复数据。
  • 关于postgresql - Docker容器中的Postgresql版本与其数据不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59680478/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com