Files
iotlcm/schema/README.md
T

3.7 KiB
Raw Blame History

数据库初始化

init.sql 是单文件初始化脚本,MySQL 容器首次以空数据卷启动时由 docker-entrypoint-initdb.d 自动执行。已有数据目录不会自动执行新增 DDL,升级时需先核对四张表状态,再按上游迁移规范处理,不能删除数据卷。

内容组成

按文件内顺序执行,整体幂等:

段 内容
表结构与基础数据 建 db_iotlcm 库 + 全部表 + 菜单/字典/角色/租户/部门/演示账号
结构补齐 card_channel_assoc 表 + 27 个列(用存储过程按 information_schema 判断)
结构对齐生产 t_sms_template_config 表、batch_no 默认值
通道模板 3 条(上游密钥已置空)
数据字典 86 类 / 436 条
Mock 通道 channel_yd_mock。卡全部挂在该通道上,缺则卡片管理的通道列、筛选、开停复机均不可用
角色链 代理下发模板参数与角色下发标记
定时任务 20 条,默认全部停用(避免自动全量同步打满机器)
菜单增量 达量断网按钮权限、全量同步页
v1.0.4 前置 导出中心表 t_export_task、通知已读表 sys_notice_user、card_channel_assoc.channel_id 扩宽、菜单权限
APN 异步恢复 data_operation_parent、data_operation_sub_batch、data_operation_sub_detail、data_operation_card_claim 四表;须先建表后启动 worker
数据修复 sys_dept.ancestors 尾逗号归一化(全新库为空操作)
业务账号与口令 建 u_iotlcm 账号、可选库 iotdb、种子账号口令统一重置

来源

内容取自演示环境正在使用的种子库,以生产 89 表基线为基础,补齐 v1.0.4 的 2 张表及 worker 异步恢复所需的 4 张表,初始化后为 95 表。四张恢复表直接采用内部数据库仓 feat/data-operation-reconcile-20261015 的 SQL/20261015_data_operation_sub_batch.sql(提交 bf5f7fd);原有 91 表统计不含这四张表。脱敏及部署适配包括:

  • 演示账号昵称、邮箱、手机号、登录 IP、头像 → 占位或编造值
  • 公司名、组织名 → 「示例企业」等通用名
  • 内网/生产 IP、内部域名 → 删除或改为服务名
  • 通道模板中真实上游密钥 → 置空
  • 数据库账号与种子账号口令 → 统一为部署口令(字面值,见下)

改口令

口令是字面值,不使用环境变量。修改时必须同步以下三处:

位置 内容
docker-compose.yml MYSQL_ROOT_PASSWORD(MySQL 健康检查会引用此值)
config/*/config.yaml 各服务 database link 的口令
schema/init.sql 末段 u_iotlcm 账号口令、种子账号重置口令
OLD='原口令'; NEW='新口令'
grep -rl "$OLD" docker-compose.yml config/ schema/ | xargs sed -i "s/$OLD/$NEW/g"

::: warning 口令不能含 @ : / 等字符 连接串格式为 mysql:用户:口令 再接 tcp(主机:端口)/库,口令里的 @、:、/ 会被当作分隔符,导致连接失败。用字母数字组合。 :::

重新初始化

init.sql 只在 data/mysql 为空时执行。改完必须清空数据卷才会重跑:

docker compose stop mysql
sudo rm -rf ./data/mysql
docker compose up -d mysql

⚠️ 会删除全部数据,生产环境禁止执行。

空表说明

以下表为空属预期:

表 说明
t_sim_flow_package_info 流量套餐。为空时无法办理套餐/续费/改套餐,需在管理端「套餐定价」中创建
t_sim_card 卡数据,可通过挡板服务造卡或自行入库
其余 t_* 业务表 随业务操作产生数据