新增显式命令:--seed-demo-data --confirm-production-demo-data
仅允许非 Development 环境运行。 只允许写入没有业务数据的独立空库。 演示数据使用单个 InnoDB 事务,失败整体回滚;迁移 DDL 仍单独执行,因为 MySQL 8.4 的 DDL 会隐式提交。MySQL 事务文档、隐式提交说明 不包含通用测试密码或学生、教师登录账号。 包含校区、学期、30 间教室、16 个学院、52 个专业、104 个班级、128 名教师、3,640 名学生和148门课程。
This commit is contained in:
@@ -104,6 +104,37 @@ $env:ConnectionStrings__MySql = 'Server=db.example.edu.cn;Port=3306;Database=jia
|
||||
`SeedAdmin__UserName`、`SeedAdmin__Password` 和 `SeedAdmin__DisplayName`,
|
||||
账号创建后立即移除这些配置。
|
||||
|
||||
### 独立的生产演示环境
|
||||
|
||||
如需验证 Production 配置和 MySQL 8.4 部署链路,请新建专用的空数据库(例如
|
||||
`jiaowu_demo`),不要向准备承载真实业务的数据库插入演示数据。先按前述步骤执行
|
||||
`--migrate-only`,停止该环境的应用实例,再改用应用运行账号执行:
|
||||
|
||||
```powershell
|
||||
$env:ConnectionStrings__MySql = 'Server=db.example.edu.cn;Port=3306;Database=jiaowu_demo;User=APP_USER;Password=APP_PASSWORD;SslMode=VerifyFull;SslCa=C:\certs\mysql-ca.pem;'
|
||||
$env:SeedAdmin__UserName = 'demo-admin'
|
||||
$env:SeedAdmin__Password = '请替换为演示环境专用的强密码'
|
||||
$env:SeedAdmin__DisplayName = '演示环境管理员'
|
||||
|
||||
& '.artifacts\publish\Jiaowu.Api.exe' --seed-demo-data --confirm-production-demo-data
|
||||
|
||||
Remove-Item -LiteralPath 'Env:SeedAdmin__UserName'
|
||||
Remove-Item -LiteralPath 'Env:SeedAdmin__Password'
|
||||
Remove-Item -LiteralPath 'Env:SeedAdmin__DisplayName'
|
||||
```
|
||||
|
||||
该命令仅允许在非 Development 环境运行,且必须同时提供确认参数。它会再次检查迁移
|
||||
状态,只在没有校区、学院、专业、班级、师生、课程、学期、教室和教学任务等业务数据
|
||||
的空库中写入;检测到任何已有业务数据都会直接终止。写入完成后命令退出,不会启动
|
||||
Web 服务,也不会在以后启动时自动补写或重复写入。
|
||||
|
||||
演示数据包含校区、学期、教学楼与教室、16 个学院/教学单位、52 个专业、104 个行政班、
|
||||
128 名教师、3,640 名学生、148 门课程和授课资格,不包含内置通用密码或学生/教师登录
|
||||
账号。演示数据 DML 在一个事务中提交,失败会回滚;迁移 DDL 必须保持为前置独立步骤,
|
||||
因为 MySQL 8.4 的 DDL 会触发隐式提交。参见
|
||||
[MySQL 8.4 事务说明](https://dev.mysql.com/doc/refman/8.4/en/commit.html)和
|
||||
[隐式提交语句清单](https://dev.mysql.com/doc/refman/8.4/en/implicit-commit.html)。
|
||||
|
||||
生产数据库使用 MySQL 专用 EF Core 迁移。部署前先恢复仓库工具并检查迁移:
|
||||
|
||||
```powershell
|
||||
|
||||
Reference in New Issue
Block a user