# TMS 初始化 SQL 执行说明 空库初始化当前推荐使用 [V2__tms_schema_full.sql](/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/db/migration/V2__tms_schema_full.sql)。 [V1__tms_schema_full.sql](/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/db/migration/V1__tms_schema_full.sql) 仅用于旧数据库迁移:它会在已有 `tms_auth_full_account` 表上新增 `password_digest`,把固定角色席位统一重置为默认口令 `Sunyard@123`,并置为强制改密。旧库不能用 `V2` 直接覆盖执行。 这份脚本已经整理成“最终库结构初始化版”,适合空库直接初始化,不再按 migration 逐步执行 `ALTER / RENAME`,也不依赖后置 `UPDATE` 修补种子数据。 如果你在 TiDB 客户端里一次性执行整份文件,出现下面这类报错: ```text SQL Error [8130] [HY000]: client has multi-statement capability disabled ``` 这不是 SQL 内容本身错误,而是“客户端把整份脚本作为一次多语句请求发送”,而当前 TiDB 连接未开启 multi-statement。 ## 推荐做法 ### 方式一:用脚本执行模式运行最终初始化脚本 优先用客户端的 `Run Script` / `Execute Script` 模式执行: - [V2__tms_schema_full.sql](/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/db/migration/V2__tms_schema_full.sql) ### 方式二:用“脚本执行”而不是“单次执行” 如果你的客户端支持 `Run Script` / `Execute Script`,优先用脚本模式。 脚本模式通常会把每条语句分开发送,而不是整份文件一次发给数据库。 ### 方式三:使用命令行客户端导入 例如: ```bash mysql -h -P -u -p tms < /path/to/V2__tms_schema_full.sql ``` 或者先登录后: ```sql source /path/to/V2__tms_schema_full.sql; ``` ### 方式四:实在只能单条执行时 先执行: ```sql CREATE DATABASE IF NOT EXISTS tms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE tms; ``` 然后把 [V2__tms_schema_full.sql](/Users/waner/Work/CISD/文档/tms-framework/src/main/resources/db/migration/V2__tms_schema_full.sql) 中的语句按分号逐条执行。 ## 不推荐但可选 你也可以按报错提示开启: ```sql SET GLOBAL tidb_multi_statement_mode='ON'; ``` 但这会影响实例级行为,有安全风险,不建议为了初始化脚本临时这么做,除非你明确知道数据库侧的风险边界并且由 DBA 允许。 ## 当前默认账号种子 脚本已经包含 4 个固定角色账号: - `SUPER_ADMIN` - `KEY_ADMIN` - `AUDIT_ADMIN` - `OPS_ADMIN` 默认口令均为 `Sunyard@123`,其中: - `KEY_ADMIN` 默认 `ACTIVE` - 其他角色默认 `UNENABLED` - 所有角色 `need_change_password = 1`