Просмотр исходного кода

docs(academic): D14 测试库弃唯一约束的注释补明(生产 MySQL 约束照常生效)

Q 10 часов назад
Родитель
Сommit
f7af40f7cd
1 измененных файлов с 5 добавлено и 2 удалено
  1. 5 2
      internal/academic/handler/course_handler_test.go

+ 5 - 2
internal/academic/handler/course_handler_test.go

@@ -72,8 +72,11 @@ func newCourseTestDB(t *testing.T) *gorm.DB {
 		&model.UserDivideInto{}, &model.UserDivideIntoLog{},
 		&model.UserDivideInto{}, &model.UserDivideIntoLog{},
 	}
 	}
 	// 先把 `newHandlerTestDB` 留下的**唯一索引**清干净:`uk_biz_no` 在 t_user_balance_request
 	// 先把 `newHandlerTestDB` 留下的**唯一索引**清干净:`uk_biz_no` 在 t_user_balance_request
-	// (资金域)与 3 张课程表上同名,SQLite 的索引名是库级唯一 ⇒ 不清会直接建表失败。
-	// 测试库放弃唯一约束(生产 MySQL 表级隔离,不受影响)。
+	// (资金域)与 3 张课程表上同名,SQLite 的索引名是**库级唯一**,而 MySQL 是**表级**
+	// ⇒ 不清会直接建表失败。
+	// ⚠ 测试库因此**放弃唯一约束**(含 `uk_biz_no` / `uk_user_inst_campus` 等)——
+	// 这只是**规避 sqlite 索引名冲突**的手段:**生产 MySQL 的唯一约束照常生效**,
+	// 幂等/去重行为不依赖测试库(那由 `INSERT IGNORE` + 唯一键在真库上保证)。
 	var leftovers []string
 	var leftovers []string
 	if err := base.Raw(
 	if err := base.Raw(
 		"SELECT name FROM sqlite_master WHERE type='index' AND name NOT LIKE 'sqlite_%'").Scan(&leftovers).Error; err != nil {
 		"SELECT name FROM sqlite_master WHERE type='index' AND name NOT LIKE 'sqlite_%'").Scan(&leftovers).Error; err != nil {