数据库
支持的数据库
ShipAny TanStack 使用 Drizzle ORM,通过 DATABASE_PROVIDER + DATABASE_URL 切换:
| Provider | DATABASE_URL 示例 | 说明 |
|---|---|---|
sqlite | file:data/local.db | 默认——本地开发零配置 |
postgres | postgresql://user:pass@localhost:5432/dbname | 可选 DB_SCHEMA |
mysql | mysql://user:pass@localhost:3306/dbname | MySQL 5.7+ |
turso | libsql://your-db.turso.io | 需配 DATABASE_AUTH_TOKEN |
d1 | (D1 绑定,无 URL) | 部署 Cloudflare Workers 时使用 |
切换数据库
# 1. 修改 .env.development 的 DATABASE_PROVIDER + DATABASE_URL
# 2. 把对应方言的 schema 模板(.sqlite/.postgres/.mysql)复制为 schema.ts
pnpm db:setup
# 3. 应用 schema
pnpm db:pushSchema 位于 src/config/db/schema.ts,由方言模板(schema.sqlite.ts、schema.postgres.ts、schema.mysql.ts)生成。
迁移流程
- 开发环境 —
pnpm db:push直接应用 schema 变更,不产生 SQL 文件。 - 生产环境 — 生成版本化迁移并执行:
pnpm db:generate # 在 ./drizzle 目录生成 .sql 迁移文件
pnpm db:migrate # 执行未应用的迁移- 数据浏览 —
pnpm db:studio打开 Drizzle Studio。
数据表
| 分组 | 数据表 |
|---|---|
| 鉴权 | user、session、account、verification |
| 内容 | config、taxonomy(分类)、post |
| 业务 | order、subscription、credit、apiKey、inviteCode、userRole、role、permission、rolePermission |