fix mysql tenant database schema cleanup

This commit is contained in:
richjohnrambo
2026-08-15 15:48:17 +08:00
parent 672fc68cfa
commit d8d1639d5b
6 changed files with 868 additions and 81 deletions
+61
View File
@@ -0,0 +1,61 @@
//go:build ignore
package main
import (
"database/sql"
"fmt"
"os"
"strings"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dsn := strings.TrimPrefix(os.Getenv("IM_MYSQL_DSN"), "mysql://")
query := os.Getenv("IM_SQL_QUERY")
if dsn == "" || query == "" {
fatal("IM_MYSQL_DSN and IM_SQL_QUERY are required")
}
db, err := sql.Open("mysql", dsn)
if err != nil {
fatal(err)
}
defer db.Close()
rows, err := db.Query(query)
if err != nil {
fatal(err)
}
defer rows.Close()
cols, err := rows.Columns()
if err != nil {
fatal(err)
}
fmt.Println(strings.Join(cols, "\t"))
for rows.Next() {
values := make([]sql.NullString, len(cols))
scan := make([]any, len(cols))
for i := range values {
scan[i] = &values[i]
}
if err := rows.Scan(scan...); err != nil {
fatal(err)
}
out := make([]string, len(cols))
for i, value := range values {
if value.Valid {
out[i] = value.String
}
}
fmt.Println(strings.Join(out, "\t"))
}
if err := rows.Err(); err != nil {
fatal(err)
}
}
func fatal(v any) {
fmt.Fprintln(os.Stderr, v)
os.Exit(1)
}