Skip to content

Commit 1764695

Browse files
committed
fix(mssql): fix Docker startup to match PostgreSQL pattern
Update MSSQL Docker startup code to create a new connection on each ping attempt, matching the pattern used by PostgreSQL. This ensures the connection is properly established even if MSSQL takes time to become ready. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 2c2463b commit 1764695

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

internal/sqltest/docker/mssql.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"database/sql"
66
"fmt"
7+
"log/slog"
78
"os/exec"
89
"strings"
910
"time"
@@ -46,6 +47,8 @@ func startMSSQLServer(c context.Context) (string, error) {
4647
}
4748
}
4849

50+
uri := "sqlserver://sa:MySecretPassword1!@localhost:1433?database=master"
51+
4952
var exists bool
5053
{
5154
cmd := exec.Command("docker", "container", "inspect", "sqlc_sqltest_docker_mssql")
@@ -81,25 +84,23 @@ func startMSSQLServer(c context.Context) (string, error) {
8184
ticker := time.NewTicker(500 * time.Millisecond)
8285
defer ticker.Stop()
8386

84-
uri := "sqlserver://sa:MySecretPassword1!@localhost:1433?database=master"
85-
86-
db, err := sql.Open("sqlserver", uri)
87-
if err != nil {
88-
return "", fmt.Errorf("sql.Open: %w", err)
89-
}
90-
91-
defer db.Close()
92-
9387
for {
9488
select {
9589
case <-ctx.Done():
9690
return "", fmt.Errorf("timeout reached: %w", ctx.Err())
9791

9892
case <-ticker.C:
99-
// Run your function here
93+
db, err := sql.Open("sqlserver", uri)
94+
if err != nil {
95+
slog.Debug("sqltest", "open", err)
96+
continue
97+
}
10098
if err := db.PingContext(ctx); err != nil {
99+
slog.Debug("sqltest", "ping", err)
100+
db.Close()
101101
continue
102102
}
103+
db.Close()
103104
return uri, nil
104105
}
105106
}

0 commit comments

Comments
 (0)