Files
Meshray-Manager/cmd/checkdb/main.go
T
zkcoi 59e3059246 rebuild: split core into separate repo; move wg-go integration to internal/ctr/corebind
- go.mod: require git.zkcoi.com/zkcoi/meshray/core, replace => ../Meshray
- internal/ctr/corebind: EnhancedBind + registry + adapter (wg-go integration isolated)
- cmd/mr-wg migrated from old core/cmd/meshray-core
- core/ removed; CHANGELOG updated; fix checkdb vet warning
2026-07-15 16:08:13 +08:00

72 lines
1.4 KiB
Go

package main
import (
"fmt"
"log"
"github.com/glebarez/sqlite"
"gorm.io/gorm"
)
func main() {
db, err := gorm.Open(sqlite.Open("e:/Project/MeshRay/data/meshray.db"), &gorm.Config{})
if err != nil {
log.Fatal(err)
}
fmt.Println("=== MeshRay 数据库表结构检查 ===")
// 检查所有表是否存在
tables := []string{
"networks",
"devices",
"policies",
"services",
"mesh_seeds",
"pending_joins",
"alert_rules",
"audit_logs",
"users",
"system_configs",
"ddns_configs",
"network_members",
"security_keys",
"system_settings",
"external_services",
"turn_configs", // 这个应该不存在
}
for _, table := range tables {
query := fmt.Sprintf("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='%s'", table)
var count int64
db.Raw(query).Scan(&count)
if count > 0 {
fmt.Printf("✅ %s: 存在\n", table)
// 显示字段信息
showTableSchema(db, table)
} else {
fmt.Printf("❌ %s: 不存在\n", table)
}
}
}
func showTableSchema(db *gorm.DB, tableName string) {
rows, err := db.Raw(fmt.Sprintf("PRAGMA table_info(%s)", tableName)).Rows()
if err != nil {
return
}
defer rows.Close()
for rows.Next() {
var cid, notnull int
var name, typ string
var dflt_value interface{}
var pk int
rows.Scan(&cid, &name, &typ, &notnull, &dflt_value, &pk)
fmt.Printf(" - %s (%s) [pk=%d, notnull=%d]\n", name, typ, pk, notnull)
}
}