Files
2025-12-23 04:19:57 +01:00

3.1 KiB

PostgreSQL Datenbank Verbindung

Du verbindest dich mit der PostgreSQL Datenbank des Projekts.

Automatischer Setup

1. Betriebssystem erkennen

Prüfe zuerst das Betriebssystem:

uname -s

2. PostgreSQL CLI installieren (falls nicht vorhanden)

macOS:

# Prüfen ob psql installiert ist
which psql || brew install postgresql

Linux (Ubuntu/Debian):

which psql || sudo apt-get update && sudo apt-get install -y postgresql-client

Linux (Alpine):

which psql || apk add postgresql-client

3. Environment Variable lesen

Lese die DATABASE_URL aus .env.local oder .env:

# Aus .env.local
grep DATABASE_URL .env.local 2>/dev/null || grep DATABASE_URL .env 2>/dev/null

Die URL hat das Format:

postgresql://USER:PASSWORD@HOST:PORT/DATABASE

4. Mit Datenbank verbinden

# Direkte Verbindung mit URL
psql "$DATABASE_URL"

# Oder mit Supabase
psql "postgresql://postgres.[PROJECT-REF]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:6543/postgres"

Häufige Befehle nach Verbindung

-- Alle Tabellen anzeigen
\dt

-- Tabellen mit Schema
\dt public.*

-- Tabellen-Details
\d table_name

-- Alle Schemas
\dn

-- Benutzer anzeigen
\du

-- Aktuelle Datenbank
SELECT current_database();

-- Tabellen-Größen
SELECT
  tablename,
  pg_size_pretty(pg_total_relation_size(schemaname || '.' || tablename)) as size
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(schemaname || '.' || tablename) DESC;

Supabase spezifische Queries

-- Auth Users (Supabase)
SELECT id, email, created_at FROM auth.users LIMIT 10;

-- Storage Buckets
SELECT * FROM storage.buckets;

-- RLS Policies
SELECT * FROM pg_policies WHERE schemaname = 'public';

-- Enabled Extensions
SELECT * FROM pg_extension;

SQL Datei ausführen

# SQL Datei ausführen
psql "$DATABASE_URL" -f migrations/001_init.sql

# Mit Output
psql "$DATABASE_URL" -f migrations/001_init.sql -v ON_ERROR_STOP=1

Backup & Restore

# Backup erstellen
pg_dump "$DATABASE_URL" > backup.sql

# Nur Schema
pg_dump "$DATABASE_URL" --schema-only > schema.sql

# Nur Daten
pg_dump "$DATABASE_URL" --data-only > data.sql

# Restore
psql "$DATABASE_URL" < backup.sql

Troubleshooting

Connection refused

  • Supabase Projekt ist pausiert → Dashboard öffnen
  • Firewall blockiert Port 5432/6543
  • IP nicht in Allowlist (Supabase: Database Settings > Connection Pooling)

SSL required

psql "$DATABASE_URL?sslmode=require"

Password authentication failed

  • Passwort in URL URL-encoded? (@%40, etc.)
  • Richtiges Passwort aus Supabase Dashboard

Automatische Verbindung

Führe diese Schritte aus:

  1. OS prüfen: uname -s
  2. psql prüfen: which psql
  3. Falls nicht vorhanden: Installiere je nach OS
  4. DATABASE_URL laden: Aus .env.local oder .env
  5. Verbinden: psql "$DATABASE_URL"

Soll ich die Verbindung jetzt herstellen?