【发布时间】:2021-11-13 08:03:11
【问题描述】:
我的开发文件如下:
version: '3'
services:
db:
image: mdillon/postgis
container_name: sl_database
ports:
- "5432:5432"
volumes:
- db_vesatogo_starling_v1:/var/lib/postgresql/data
env_file:
- ./config/dev.env
networks:
- db_network
db-replica:
image: mdillon/postgis
container_name: sl_database_replica
ports:
- "5433:5432"
volumes:
- db_vesatogo_starling_v1_replica:/var/lib/postgresql/data
env_file:
- ./config/dev1.env
networks:
- db_network
pgadmin:
image: dpage/pgadmin4:4.28
container_name: sl_admin
links:
- db
- db-replica
depends_on:
- db
- db-replica
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: password
ports:
- "80:80"
- "81:80"
networks:
- db_network
networks:
db_network:
driver: bridge
volumes:
db_vesatogo_starling_v1:
db_vesatogo_starling_v1_replica:
static:
现在,我在我的设置中引入了一个副本数据库。 我的数据库设置如下:
DATABASES = {
"default": {
"ENGINE": "django_tenants.postgresql_backend",
"NAME": os.environ.get("POSTGRES_DB", "starling"),
"USER": os.environ.get("POSTGRES_USER", "user"),
"PASSWORD": os.environ.get("POSTGRES_PASSWORD", "password"),
"HOST": os.environ.get("POSTGRES_HOST", "db") if VT_ENV in PROD_ENV_TAGS else "localhost",
"PORT": os.environ.get("POSTGRES_PORT", 5432),
"TEST": {"NAME": os.environ.get("POSTGRES_TEST_DB", "starling_test")},
},
"replica": {
"ENGINE": "django_tenants.postgresql_backend",
"NAME": os.environ.get("POSTGRES_DB", "starling_replica"),
"USER": os.environ.get("POSTGRES_USER", "user"),
"PASSWORD": os.environ.get("POSTGRES_PASSWORD", "password"),
"HOST": os.environ.get("POSTGRES_HOST", "db") if VT_ENV in PROD_ENV_TAGS else "localhost",
"PORT": os.environ.get("POSTGRES_PORT", 5433),
"TEST": {"NAME": os.environ.get("POSTGRES_TEST_DB", "starling_test")},
},
}
在这些配置之后,当我运行查询时(例如:Table.objects.using("replica").all()),我收到以下错误:django.db.utils.ProgrammingError: column COLUMN_NAME does not存在。是的,我已经正确完成了所有迁移! 请建议我应该进行哪些更改?
【问题讨论】:
标签: python django postgresql docker