Fom*_*aut 3 django postgresql psycopg2
我正在尝试使用自定义架构在 Django 项目中配置 PostgreSQL。我的设置是:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['DB_DATABASE'],
'USER': os.environ['DB_USERNAME'],
'PASSWORD': os.environ['DB_PASSWORD'],
'HOST': os.environ.get('DB_HOST', 'localhost'),
'PORT': os.environ.get('DB_PORT', '5432'),
'OPTIONS': {
'options': '-c search_path=my_custom_schema',
},
}
}
Run Code Online (Sandbox Code Playgroud)
my_custom_schema我也希望在架构中创建 django 系统表。当我第一次迁移时,我收到错误。
$ python manage.py migrate
...
psycopg2.errors.InvalidSchemaName: no schema has been selected to create in
LINE 1: CREATE TABLE "django_migrations" ("id" bigserial NOT NULL PR...
...
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我也尝试过这样的选择:
'OPTIONS': {
'options': '-c search_path=my_custom_schema,public',
},
Run Code Online (Sandbox Code Playgroud)
迁移进展顺利,但表是在publicschema 中创建的,而不是在my_custom_schema.
Python版本:3.9.7
Django版本:3.2.8
Psycopg2版本:psycopg2-binary==2.9.1
PostgreSQL 版本:12.8
我自己解决了这个问题。原因是出乎意料的,因为该错误的信息量不大。my_custom_schema我检查了用户在架构中创建表的权限,发现这是不允许的。因此,在我授予许可后,一切都进展顺利。
GRANT ALL ON SCHEMA my_custom_schema TO my_user;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3921 次 |
| 最近记录: |