diff --git a/server/internal/db/mysql.go b/server/internal/db/mysql.go index f04111d..772e677 100644 --- a/server/internal/db/mysql.go +++ b/server/internal/db/mysql.go @@ -2,6 +2,7 @@ package db import ( "database/sql" + "strings" _ "github.com/go-sql-driver/mysql" ) @@ -12,6 +13,16 @@ func ConnectMySQL(dsn string) (*sql.DB, error) { return nil, err } if err := db.Ping(); err != nil { + // Error 8001: Not allowed to execute statement that may change data on polar slave + // This error can occur on read-only replicas but the connection may still be usable + // Try a simple SELECT to verify the connection is actually working + if strings.Contains(err.Error(), "8001") || strings.Contains(err.Error(), "polar slave") { + var dummy int + if testErr := db.QueryRow("SELECT 1").Scan(&dummy); testErr == nil { + // Connection is actually working, ignore the ping error + return db, nil + } + } return nil, err } return db, nil diff --git a/server/server b/server/server index 0a82b64..a6714de 100755 Binary files a/server/server and b/server/server differ