接入数据库
This commit is contained in:
@@ -19,18 +19,10 @@ pages/mall/analytics/test/
|
||||
|
||||
如果您的内网 Supabase 有 Dashboard 界面:
|
||||
|
||||
1. **访问 Dashboard**
|
||||
```
|
||||
http://192.168.1.63:8000
|
||||
或
|
||||
http://192.168.1.63:3000 (Studio 默认端口)
|
||||
```
|
||||
1. **打开 Supabase Studio / Dashboard**
|
||||
- 使用你自己的部署地址访问(不要在仓库文档里硬编码地址/账号/密码)。
|
||||
|
||||
2. **登录**
|
||||
- 用户名:`supabase`(根据您的配置)
|
||||
- 密码:`D4ce5p8YBpfYzEoDGZ_7MzehZcWrdCNyDEj_VSUBmOw`
|
||||
|
||||
3. **打开 SQL Editor**
|
||||
2. **打开 SQL Editor**
|
||||
- 在左侧菜单找到 "SQL Editor" 或 "SQL"
|
||||
- 点击 "New Query"
|
||||
|
||||
@@ -51,10 +43,9 @@ pages/mall/analytics/test/
|
||||
1. **连接数据库**
|
||||
```bash
|
||||
# 使用 psql 连接
|
||||
psql -h 192.168.1.63 -p 5432 -U postgres -d postgres
|
||||
psql -h <DB_HOST> -p <DB_PORT> -U postgres -d postgres
|
||||
|
||||
# 输入密码(根据您的配置)
|
||||
# POSTGRES_PASSWORD=yxyHINygZMLSq9jLddrZQBB-CoyGHSF5DwlwWmbrYXc
|
||||
# 密码请按你的环境输入/从安全渠道获取(不要写进仓库)
|
||||
```
|
||||
|
||||
2. **执行 SQL 文件**
|
||||
@@ -70,41 +61,26 @@ pages/mall/analytics/test/
|
||||
### 方式 3: 通过 DBeaver / pgAdmin 等图形工具
|
||||
|
||||
1. **创建新连接**
|
||||
- 主机:`192.168.1.63`
|
||||
- 端口:`5432`
|
||||
- 主机:`<DB_HOST>`
|
||||
- 端口:`<DB_PORT>`
|
||||
- 数据库:`postgres`
|
||||
- 用户名:`postgres`
|
||||
- 密码:`yxyHINygZMLSq9jLddrZQBB-CoyGHSF5DwlwWmbrYXc`
|
||||
- 密码:`<DB_PASSWORD>`
|
||||
|
||||
2. **执行 SQL**
|
||||
- 打开 SQL 编辑器
|
||||
- 复制 SQL 文件内容
|
||||
- 执行脚本
|
||||
|
||||
### 方式 4: 通过 HTTP API(程序化执行)
|
||||
|
||||
使用 Supabase REST API 执行 SQL(需要 service_role key):
|
||||
|
||||
```javascript
|
||||
// 注意:这种方式需要 Supabase 的 SQL 执行功能
|
||||
// 通常不推荐,因为安全风险较高
|
||||
const response = await fetch('http://192.168.1.63:8000/rest/v1/rpc/exec_sql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'apikey': 'YOUR_SERVICE_ROLE_KEY',
|
||||
'Authorization': 'Bearer YOUR_SERVICE_ROLE_KEY',
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
sql: 'SELECT * FROM users LIMIT 1;'
|
||||
})
|
||||
})
|
||||
```
|
||||
> 不建议通过 HTTP API “执行任意 SQL”(高风险)。
|
||||
> 如需服务端能力,请用 Supabase Edge Functions + 限定输入输出的 RPC。
|
||||
|
||||
## 📝 执行顺序
|
||||
|
||||
**重要:必须按顺序执行!**
|
||||
|
||||
> ✅ 以 `ANALYTICS_DATA_QUICK_START.md` 为权威执行顺序与权限说明(本文件只做执行方式补充)。
|
||||
|
||||
1. ✅ **第一步:创建表结构**
|
||||
```sql
|
||||
-- 执行 01_create_tables.sql
|
||||
@@ -190,17 +166,11 @@ GRANT ALL PRIVILEGES ON SCHEMA public TO postgres;
|
||||
|
||||
### 2. 表已存在
|
||||
|
||||
如果表已存在,脚本会使用 `CREATE TABLE IF NOT EXISTS`,不会报错。
|
||||
但如果需要重新创建:
|
||||
```sql
|
||||
-- 先删除表(谨慎操作)
|
||||
DROP TABLE IF EXISTS order_items CASCADE;
|
||||
DROP TABLE IF EXISTS page_views CASCADE;
|
||||
DROP TABLE IF EXISTS user_sessions CASCADE;
|
||||
DROP TABLE IF EXISTS orders CASCADE;
|
||||
DROP TABLE IF EXISTS users CASCADE;
|
||||
DROP TABLE IF EXISTS products CASCADE;
|
||||
```
|
||||
如果表已存在:
|
||||
- `01_create_tables.sql` / `ANALYTICS_DB_SCHEMA.sql` 现为 **只创建(Create-only)** 脚本,不包含 `DROP/DELETE/TRUNCATE`,可重复执行且不会清空数据。
|
||||
- 如需结构变更,请用迁移脚本(ALTER TABLE)。
|
||||
|
||||
> 如确实要“清理后重建”,请另外单独维护清理脚本(避免把破坏性操作放进默认文档/默认流程)。
|
||||
|
||||
### 3. 时间依赖
|
||||
|
||||
@@ -238,8 +208,8 @@ Error: password authentication failed
|
||||
Error: relation "orders" already exists
|
||||
```
|
||||
**解决:**
|
||||
- 脚本已使用 `IF NOT EXISTS`,通常不会报错
|
||||
- 如需重新创建,先删除表
|
||||
- 说明你执行的脚本版本与当前仓库不一致,或只拷贝了部分 SQL
|
||||
- 请按 `ANALYTICS_DATA_QUICK_START.md` 的顺序完整执行最新脚本(Drop-first,不应出现该错误)
|
||||
|
||||
### Q4: 权限不足
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user