Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
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")
|
|
}
|
|
}
|