Lokale Datenbanken mit TableStudio
TableStudio verwaltet Datenbankserver auf diesem Mac, einschließlich solcher, die es von Homebrew oder Postgres.app übernommen hat. Bevorzuge seine Werkzeuge gegenüber selbstgebauten Docker-Befehlen oder initdb, da das Ergebnis in der App des Benutzers als gespeicherte Verbindung erscheint.
„Verbindung abgelehnt“ bei einer lokalen Datenbank
connection_status(ohne Argumente meldet es jede Verbindung). Es führt keine Abfrage aus, funktioniert also, während die Datenbank ausfällt, und gibt an, ob ein lokaler Server die Verbindung unterstützt und ob dieser Server läuft.- Wenn der Server gestoppt ist, rufe
start_local_databasemit der zurückgegebeneninstance_idauf. Es ist sicher, dies aufzurufen, wenn der Server bereits läuft. - Wenn der Port von etwas anderem belegt ist, nennt der Fehler den Belegenden. Informiere den Benutzer, anstatt Prozesse zu beenden.
list_local_databases zeigt alles Lokale an: verwaltete Server, übernommene, SQLite-Dateien und Server, die TableStudio nicht verwaltet, aber einen Port belegen. Beachte die zwei IDs: instance_id ist der Server (Start und Stopp verwenden sie), und connection_id ist die Datenbank, die du abfragst. Sie sind nicht austauschbar.
Eine neue Datenbank
create_local_database mit einem name und einem engine:
sqlitebenötigt keine Installation und ist sofort einsatzbereit. Bevorzuge es, wenn der Benutzer nur einen Ort zum Speichern von Daten haben möchte.postgres,mysqlundclickhousebenötigen, dass die Server-Binärdateien dieser Engine bereits auf dem Mac vorhanden sind. TableStudio bündelt keine, und das Tool meldet dies, wenn sie fehlen. Gib den Installationshinweis weiter, anstatt Software ungefragt zu installieren.
Es gibt eine connection_id zurück, die bereit ist, über die Tools von TableStudio abgefragt zu werden, sowie env_line (DATABASE_URL=…) für das Projekt selbst. Dann:
- Überprüfe, ob
.gitignoredie zu verwendende Env-Datei (.env,.env.local) abdeckt. Wenn nicht, füge sie dort zuerst hinzu. - Setze
env_linein diese Datei, unter Verwendung des Variablennamens, den das Projekt bereits liest (DATABASE_URLoder wie auch immer die Konfiguration erwartet). - Führe die Migrationen des Projekts (und ggf. das Seeding) dagegen aus.
Wiederhole den Verbindungsstring niemals im Chat und schreibe ihn niemals in Code, Dokumentation oder einen Commit.
Rufe stop_local_database nicht als Aufräumaktion oder zum Freigeben eines Ports auf, es sei denn, der Benutzer hat darum gebeten. Es trennt alles, was diesen Server verwendet, einschließlich der eigenen Fenster des Benutzers.
Der Verbindungsstring einer vorhandenen lokalen Datenbank
Wenn das Projekt eine lokale Datenbank erreichen muss, die TableStudio bereits kennt (um eine fehlende .env zu ergänzen oder Tests auf eine Sandbox auszurichten), rufe get_connection_url mit ihrer connection_id auf und verwende env_line wie oben.
- Von TableStudio erstellte Datenbanken, Sandboxen und lokale Datenbanken ohne Passwort sind immer verfügbar.
- Eine lokale Verbindung, die der Benutzer mit einem eigenen Passwort gespeichert hat, wird nur geteilt, wenn er dies erlaubt hat. Andernfalls nennt die Verweigerung die Einstellung: Gib diese weiter oder lasse den Benutzer den Wert selbst in die Env-Datei einfügen. Frage niemals nach einem Passwort im Chat.
- Remote-Datenbanken, SSH-Tunnel und alles, was als Produktion getaggt ist, werden nie geteilt. Verwende für diese die Tools von TableStudio.
Eine sichere Kopie zum Experimentieren
create_sandbox erstellt eine einmalige lokale Kopie einer beliebigen Verbindung (die Quelle wird nur gelesen):
data: "none"kopiert nur das Schema. Am besten zum Testen von DDL.data: "sample"kopiert bis zurowsZeilen pro Tabelle. Am besten zum Überprüfen einer Datenkorrektur mit realistischen Zeilen.data: "fake"generiert Zeilen.
Führe nach Belieben Abfragen gegen die connection_id der Sandbox aus. Der Benutzer verwirft sie mit einem Klick; du kannst sie nicht löschen. Verwende list_sandboxes, um eine zuvor erstellte wiederzuverwenden.
PostgreSQL-Erweiterungen
list_extensions zeigt, was der Server installieren kann und was bereits installiert ist. add_extension installiert eine (CREATE EXTENSION IF NOT EXISTS). Behandle es als Schemaänderung: Schlage es auf einer gemeinsamen oder Produktionsdatenbank vor, anstatt es auszuführen. Und wenn das Repository ein Migrationstool hat, füge es dort hinzu, damit auch andere Umgebungen es erhalten.