2026-08-03 12:43:30 +08:00
|
|
|
|
# 测试环境 SQL 执行说明
|
|
|
|
|
|
|
|
|
|
|
|
## 本轮一期回归
|
|
|
|
|
|
|
|
|
|
|
|
- 统一入口:`2026-07-31一期回归测试环境增量迁移.sql`
|
|
|
|
|
|
- 适用数据库:MySQL 8.0。
|
|
|
|
|
|
- 执行账号需要对 `baiyue_iam`、`baiyue_warehouse`、`baiyue_order`、`baiyue_firstleg` 具备建表、改表、建索引、创建临时存储过程和数据写入权限。
|
|
|
|
|
|
- 脚本不会创建数据库,不会清理或删除业务数据,也不会写入演示租户、演示用户、演示仓库、演示往来单位或快递公司样本。
|
|
|
|
|
|
- 脚本可重复执行。MySQL 的 DDL 会隐式提交,因此不能把整份跨库脚本视为可整体回滚的事务。
|
|
|
|
|
|
- 统一入口已内联 IAM 客户档案字段迁移和 `platform:customer:view` 权限迁移;测试环境不要再额外拼接或重复按模块脚本执行。
|
|
|
|
|
|
|
|
|
|
|
|
## IAM 来源与执行顺序
|
|
|
|
|
|
|
|
|
|
|
|
统一入口中的 IAM 段按以下模块迁移依赖顺序组织,并通过元数据判断或 `ON DUPLICATE KEY UPDATE` 保持可重复执行:
|
|
|
|
|
|
|
|
|
|
|
|
1. IAM 基线表必须已存在(`iam.sql`)。
|
|
|
|
|
|
2. 权限父菜单和既有客户列表/审核权限基线(`phase1-admin-rbac.sql`、`rbac-role-management-v2.sql`)。
|
|
|
|
|
|
3. `phase1-platform-master-data-and-permission-management.sql` 中的 `platform:customer:view`、既有角色继承及管理员授权。
|
2026-08-04 09:05:28 +08:00
|
|
|
|
4. `phase1-customer-profile.sql` 中的十个 `iam_tenant` 客户档案字段。
|
|
|
|
|
|
5. `phase1-onboarding.sql` 中的 `PROFILE_REQUIRED` 默认状态、审核结果字段、资质审核备注及成员审计字段。
|
|
|
|
|
|
|
|
|
|
|
|
统一入口同时幂等补齐审核自动开户所需的全局 `MERCHANT_OWNER` 角色模板、全局商户菜单/按钮权限和角色授权;执行后应使用 `iam/src/test/resources/db/verify-phase1-admin-rbac.sql` 确认模板存在且权限完整。
|
2026-08-03 12:43:30 +08:00
|
|
|
|
|
|
|
|
|
|
测试环境只执行统一入口;模块脚本用于新环境基线构建或单模块升级,不应在统一入口执行后再次串行执行。
|
|
|
|
|
|
|
|
|
|
|
|
## 执行方式
|
|
|
|
|
|
|
|
|
|
|
|
在 Navicat、DataGrip 或 MySQL 命令行中以“运行脚本”方式完整执行,确保客户端支持 `DELIMITER`。不要只选中局部语句执行。
|
|
|
|
|
|
|
2026-08-04 09:05:28 +08:00
|
|
|
|
执行结束后必须看到 `MIGRATION_COMPLETED`,并确认其前面的 IAM 权限、IAM 客户档案十字段、IAM 注册审核字段、资质与成员审计字段、Warehouse 表结构、Order 幂等表和 Firstleg 索引核验均通过。
|
|
|
|
|
|
|
|
|
|
|
|
## 公共导出中心开发阶段重建
|
|
|
|
|
|
|
|
|
|
|
|
统一迁移脚本中的 `file_export_task` 是一期旧基线,不能自动升级已经存在的表。公共导出中心尚未进入生产、测试环境确认没有需要保留的导出任务时,按下列顺序重建;这一步是公共导出中心上线的额外步骤,不得用于已有真实导出数据的生产环境。
|
|
|
|
|
|
|
|
|
|
|
|
先只读确认任务数为 0:
|
|
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
|
SELECT COUNT(*) AS export_task_count FROM baiyue_file.file_export_task;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
只有结果为 0 才允许执行:
|
|
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
|
USE baiyue_file;
|
|
|
|
|
|
DROP TABLE IF EXISTS file_export_outbox;
|
|
|
|
|
|
DROP TABLE IF EXISTS file_export_task_guard;
|
|
|
|
|
|
DROP TABLE IF EXISTS file_export_task;
|
|
|
|
|
|
SOURCE file/src/main/resources/db/file.sql;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
`SOURCE` 的相对路径以 MySQL 客户端启动目录为准;图形客户端可直接完整执行 `file/src/main/resources/db/file.sql`。完成后必须核验:
|
|
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
|
SELECT COUNT(*) = 3 AS export_tables_ready
|
|
|
|
|
|
FROM information_schema.tables
|
|
|
|
|
|
WHERE table_schema = 'baiyue_file'
|
|
|
|
|
|
AND table_name IN ('file_export_task', 'file_export_outbox', 'file_export_task_guard');
|
|
|
|
|
|
|
|
|
|
|
|
SELECT COUNT(*) = 1 AS creation_guard_ready
|
|
|
|
|
|
FROM baiyue_file.file_export_task_guard
|
|
|
|
|
|
WHERE guard_key = 'GLOBAL_CREATE';
|
|
|
|
|
|
|
|
|
|
|
|
SELECT COUNT(*) = 8 AS scheduler_columns_ready
|
|
|
|
|
|
FROM information_schema.columns
|
|
|
|
|
|
WHERE table_schema = 'baiyue_file' AND table_name = 'file_export_task'
|
|
|
|
|
|
AND column_name IN ('dispatch_version', 'attempt_count', 'max_attempts', 'next_retry_at',
|
|
|
|
|
|
'lease_owner', 'lease_until', 'last_heartbeat_at', 'execution_deadline_at');
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
任一结果不是 1,禁止启动 File Service。后续一旦表内存在生产数据,必须改用可重复执行的增量迁移,不能继续 DROP 重建。
|