crm/tools/add_source_column.go
2026-01-26 15:45:01 +08:00

65 lines
1.5 KiB
Go

package main
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 从环境变量或默认值获取数据库配置
host := getEnv("DB_HOST", "mysql1.rdsmbk3ednsgnnt.rds.bj.baidubce.com")
port := getEnv("DB_PORT", "3306")
user := getEnv("DB_USER", "root_dev")
password := getEnv("DB_PASSWORD", "Kdse89sd")
dbname := getEnv("DB_NAME", "crm_db")
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true", user, password, host, port, dbname)
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatalf("连接数据库失败: %v", err)
}
defer db.Close()
if err := db.Ping(); err != nil {
log.Fatalf("数据库连接测试失败: %v", err)
}
log.Println("✅ 数据库连接成功")
// 检查 source 列是否存在
var columnExists bool
err = db.QueryRow(`
SELECT COUNT(*) > 0
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = 'trial_periods' AND COLUMN_NAME = 'source'
`, dbname).Scan(&columnExists)
if err != nil {
log.Fatalf("检查列是否存在失败: %v", err)
}
if columnExists {
log.Println("✅ source 列已存在,无需迁移")
return
}
// 添加 source 列
_, err = db.Exec(`ALTER TABLE trial_periods ADD COLUMN source VARCHAR(255) DEFAULT '' AFTER customer_name`)
if err != nil {
log.Fatalf("添加 source 列失败: %v", err)
}
log.Println("✅ 成功添加 source (客户来源) 列到 trial_periods 表")
}
func getEnv(key, defaultValue string) string {
if value := os.Getenv(key); value != "" {
return value
}
return defaultValue
}