provider 자격증명 테이블 생성을 존재 검사 선행으로 전환
Some checks failed
API contract / OpenAPI type drift (push) Failing after 1m6s
Some checks failed
API contract / OpenAPI type drift (push) Failing after 1m6s
앱 DB 계정에는 스키마 CREATE 권한이 없어 런타임 CREATE TABLE IF NOT EXISTS가 테이블이 이미 있어도 권한 거부로 실패한다(운영 실측). to_regclass 존재 검사를 먼저 하고, 부트스트랩 SQL(05_runtime_auth.sql)에 DDL을 추가해 신규 볼륨에서도 소유자가 테이블을 만들도록 한다.
This commit is contained in:
parent
e82fbb58e9
commit
e3a9fc717c
2 changed files with 24 additions and 0 deletions
|
|
@ -226,8 +226,19 @@ class StoredCredential:
|
|||
|
||||
|
||||
async def ensure_table() -> None:
|
||||
"""테이블이 없을 때만 DDL을 실행한다.
|
||||
|
||||
앱 접속 계정(vignette_app)에는 스키마 CREATE 권한이 없다. Postgres는
|
||||
``CREATE TABLE IF NOT EXISTS``가 no-op이어도 스키마 CREATE 권한을 먼저
|
||||
검사하므로, 부트스트랩 SQL이 이미 만든 테이블이면 검사 없이 건너뛴다.
|
||||
"""
|
||||
pool = get_pool()
|
||||
async with pool.acquire() as conn:
|
||||
exists = await conn.fetchval(
|
||||
"SELECT to_regclass('app.admin_provider_credential') IS NOT NULL"
|
||||
)
|
||||
if exists:
|
||||
return
|
||||
await conn.execute(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS app.admin_provider_credential (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue