diff --git a/backend/internal/handler/instance_extra.go b/backend/internal/handler/instance_extra.go index 5c009ce..c359ef5 100644 --- a/backend/internal/handler/instance_extra.go +++ b/backend/internal/handler/instance_extra.go @@ -20,8 +20,12 @@ func AccessibleInstances(c *gin.Context) { if role == "admin" || role == "dba" { // admin/dba see all instances, filter by access_mode if needed query := model.DB.Order("id") + // 注意:access_mode 存在两种历史写法—— + // 前端「读」按钮写入 "read"(CreateInstanceForm), + // 另有 "readonly" 的历史值。两者都必须命中,否则选了「读」的实例 + // (尤其 MySQL)会被过滤掉,连 admin 都查不到。 if accessType == "readonly" { - query = query.Where("access_mode IN ? OR access_mode IS NULL", []string{"readwrite", "readonly"}) + query = query.Where("access_mode IN ? OR access_mode IS NULL", []string{"readwrite", "readonly", "read"}) } else { query = query.Where("access_mode IN ? OR access_mode IS NULL", []string{"readwrite", "write"}) }