package main import ( "database/sql" "flag" "log" "os" _ "github.com/go-sql-driver/mysql" "github.com/perfect-panel/server/internal/config" "github.com/perfect-panel/server/pkg/conf" "github.com/perfect-panel/server/pkg/orm" ) var configFile string func init() { flag.StringVar(&configFile, "config", "configs/ppanel.yaml", "config file path") } func main() { flag.Parse() var c config.Config conf.MustLoad(configFile, &c) // Construct DSN m := orm.Mysql{Config: c.MySQL} dsn := m.Dsn() log.Println("Connecting to database...") db, err := sql.Open("mysql", dsn+"&multiStatements=true") if err != nil { log.Fatal(err) } defer db.Close() if err := db.Ping(); err != nil { log.Fatalf("Ping failed: %v", err) } // 1. Check Version var version string if err := db.QueryRow("SELECT version()").Scan(&version); err != nil { log.Fatalf("Failed to select version: %v", err) } log.Printf("MySQL Version: %s", version) // 2. Read SQL file directly to ensure we are testing what's on disk sqlBytes, err := os.ReadFile("initialize/migrate/database/02118_traffic_log_idx.up.sql") if err != nil { log.Fatalf("Failed to read SQL file: %v", err) } sqlStmt := string(sqlBytes) // 3. Test SQL log.Printf("Testing SQL from file:\n%s", sqlStmt) if _, err := db.Exec(sqlStmt); err != nil { log.Printf("SQL Execution Failed: %v", err) } else { log.Println("SQL Execution Success") } }