fix(config): Datenbank-Passwort mit Sonderzeichen bricht den Start
Die Verbindungszeichenkette wurde mit fmt.Sprintf zusammengeklebt. Ein Passwort mit % und @ ergab eine kaputte URL: parse "postgres://aether:8UoNj%CoWJ7ze@qy@localhost:5432/aether": invalid URL escape "%Co" Der Server kam nicht über die Migrationen hinaus. Die key=value-Form hätte dasselbe Problem mit einem Leerzeichen gehabt, nur stiller. config.DSN() liefert jetzt eine postgres://-URL, gebaut mit net/url und net.JoinHostPort (klammert IPv6). pgxpool und golang-migrate nehmen sie beide unverändert – dsnToURL, splitDSN, indexByte und orDefault in pkg/db sind ersatzlos entfallen. Test deckt %, @, :, /, Leerzeichen und IPv6 ab. Dazu: DB_HOST und DB_PORT fehlten in der schlanken .env.example, weshalb localhost statt postgres gegriffen hat. APP_ENV ergänzt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
16ab6f385b
commit
35ebf609b7
5 files changed
+153
-71
No files matched your search
@@ -7,6 +7,11 @@
|
||||
|
||||
# ── Pflicht ───────────────────────────────────────────────────────────────────
|
||||
|
||||
# Steuert nur die Form der Logausgabe: `development` schreibt sie farbig und
|
||||
# mehrzeilig, `production` als JSON für deinen Logsammler.
|
||||
APP_ENV=production
|
||||
|
||||
|
||||
# Wie die Cloud von außen erreichbar ist. Wird für OIDC-Rücksprünge,
|
||||
# WOPI-Rückrufe und Freigabe-Links benutzt – ein falscher Wert fällt erst
|
||||
# dort auf, nicht beim Start.
|
||||
@@ -15,8 +20,14 @@ PUBLIC_URL=https://cloud.example.com
|
||||
# openssl rand -hex 32
|
||||
SESSION_SECRET=
|
||||
|
||||
# `postgres` ist der Dienstname aus dem Compose, nicht localhost – aus dem
|
||||
# Container heraus ist localhost er selbst. Ohne diese Zeile greift die
|
||||
# Voreinstellung `localhost`, und der Start endet in „migrations failed".
|
||||
DB_HOST=postgres
|
||||
DB_PORT=5432
|
||||
DB_NAME=aether
|
||||
DB_USER=aether
|
||||
# Jedes Zeichen ist erlaubt, auch % @ : / und Leerzeichen.
|
||||
DB_PASSWORD=
|
||||
|
||||
# Wohin die Dateien auf dem Wirt kommen. Ein gewöhnliches Verzeichnis, kein
|
||||
|
||||
Reference in new issue
Block a user