AI & Agent Dev Bug Sandbox logo
AI & Agent Dev Bug Sandbox
Back to Radar

Docs(Local-Dev): Studio Cannot Access The Database When Following DEVELOPERS.Md For Local Development

本地开发时,Studio 由于 PG_META_CRYPTO_KEY 环境变量在 Docker Compose 和 Studio 之间不一致,导致无法读取数据库元数据。文档未提供同步说明,造成开发者环境不可用。

mediumConfidence 92%Supabase

Origin Analysis

文档缺少 PG_META_CRYPTO_KEY 同步说明,导致两个环境使用不同的加密密钥,Studio 无法解密数据库元数据。这是配置一致性管理的设计缺陷,文档未覆盖该关键步骤。
1. 按照 DEVELOPERS.md 设置本地开发环境。 2. 启动 Docker 服务(包含 PostgreSQL 和 pg-meta)以及 Studio。 3. 打开 Studio,尝试查看数据库表结构或执行 SQL。 4. 观察到 Studio 报错或无法加载元数据,提示加密密钥不匹配。

Fixing Code Block

#!/bin/bash # 自动同步 PG_META_CRYPTO_KEY 从 docker-compose.yml 到 Studio 的 .env 文件 # 假设 docker-compose.yml 位于项目根目录下的 docker 文件夹中,Studio 的 .env 位于项目根目录 COMPOSE_FILE="docker/docker-compose.yml" STUDIO_ENV=".env" # 提取密钥值 KEY=$(grep -E '^\s*PG_META_CRYPTO_KEY=' "$COMPOSE_FILE" | head -n1 | cut -d '=' -f2- | tr -d '\r\n') if [ -z "$KEY" ]; then echo "Error: PG_META_CRYPTO_KEY not found in $COMPOSE_FILE" exit 1 fi # 确保 .env 文件存在 if [ ! -f "$STUDIO_ENV" ]; then echo "Error: $STUDIO_ENV not found" exit 1 fi # 更新或追加密钥 if grep -q '^PG_META_CRYPTO_KEY=' "$STUDIO_ENV"; then sed -i "s/^PG_META_CRYPTO_KEY=.*/PG_META_CRYPTO_KEY=$KEY/" "$STUDIO_ENV" else echo "PG_META_CRYPTO_KEY=$KEY" >> "$STUDIO_ENV" fi echo "PG_META_CRYPTO_KEY synced successfully"
该脚本从 Docker Compose 配置中提取 PG_META_CRYPTO_KEY 的值,并将其写入 Studio 使用的 .env 文件,确保两个环境使用相同的加密密钥。适用于本地开发快速修复,避免手动复制错误。

Edge Case Audit

该修复假定密钥已存在且无需更改。如果修改密钥,之前加密的数据库元数据将无法解密,可能导致 Studio 无法读取已有数据库。在多环境(如多个开发者、不同部署)中需确保密钥一致管理,建议使用密钥管理工具或文档明确同步流程。升级 Supabase 版本时,默认密钥可能变更,需要检查兼容性。在执行 sed 修改 .env 前建议备份,以防意外覆盖。

Ecosystem Topology