shanshanzhong 1d81df6664
Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
add:添加短链接服务
2026-01-24 00:32:08 -08:00

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")
}
}