|
@@ -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 {
|