TableStudio によるローカルデータベース
TableStudioはこのMac上のデータベースサーバーを管理します。HomebrewやPostgres.appから引き継いだものも含まれます。手動のDockerコマンドやinitdbよりも、そのツールを使用することを推奨します。結果がユーザーのアプリに保存された接続として表示されるためです。
ローカルデータベースでの「接続が拒否されました」
connection_status(引数なしですべての接続を報告します)。クエリを実行しないため、データベースがダウンしている間も動作し、接続がローカルサーバーでバックアップされているかどうか、およびそのサーバーが実行中かどうかを通知します。- サーバーが停止している場合は、返された
instance_idを指定してstart_local_databaseを呼び出します。サーバーが既に実行中の場合でも安全に呼び出すことができます。 - ポートが他の何かによって使用されている場合、エラーはその占有者を指定します。プロセスを強制終了するのではなく、ユーザーに通知してください。
list_local_databasesはローカルのすべて(管理対象サーバー、引き継いだもの、SQLiteファイル、およびTableStudioが管理していないがポートを保持しているサーバー)を表示します。2つのIDに注意してください。instance_idはサーバー(起動と停止に使用)、connection_idはクエリを実行するデータベースです。これらは互換性がありません。
新しいデータベース
create_local_databaseにnameとengineを指定します。
sqliteはインストール不要で即座に利用できます。ユーザーが単にデータを保存したい場所を必要とする場合に推奨します。postgres、mysql、clickhouseは、そのエンジンのサーバーバイナリがMacに既にインストールされている必要があります。TableStudioはバイナリをバンドルしておらず、不足している場合はツールがそのように通知します。ソフトウェアを依頼なくインストールするのではなく、インストールのヒントをユーザーに伝えてください。
TableStudio のツールを介してクエリを実行できるconnection_idと、プロジェクト用のenv_line(DATABASE_URL=...)を返します。その後:
- 使用するenvファイル(
.env、.env.local)が.gitignoreでカバーされていることを確認します。カバーされていない場合は、最初にそこに追加します。 - そのファイルに
env_lineを配置し、プロジェクトが既に読み取る変数名(DATABASE_URL、または設定で期待されるもの)を使用します。 - それに対してプロジェクトのマイグレーション(およびシードがあればそれ)を実行します。
接続文字列をチャットで繰り返したり、コード、ドキュメント、またはコミットに書き込まないでください。
ユーザーが要求しない限り、stop_local_databaseをクリーンアップやポート解放のために呼び出さないでください。そのサーバーを使用するすべてのもの(ユーザー自身のウィンドウを含む)を切断します。
既存のローカルデータベースの接続文字列
プロジェクトがTableStudioが既に認識しているローカルデータベースにアクセスする必要がある場合(不足している.envを埋めるため、またはテストをサンドボックスに向けるため)、get_connection_urlをそのconnection_idとともに呼び出し、env_lineを上記のように使用します。
- TableStudioが作成したデータベース、サンドボックス、およびパスワードのないローカルデータベースは常に利用可能です。
- ユーザーが自分のパスワードで保存したローカル接続は、許可された場合にのみ共有されます。それ以外の場合、拒否は設定を指定します。それを伝えるか、ユーザーに自分でenvファイルに値を貼り付けてもらいます。チャットでパスワードを決して要求しないでください。
- リモートデータベース、SSHトンネル、および本番とタグ付けされたものは決して共有されません。これらにはTableStudioのツールを使用してください。
実験用の安全なコピー
create_sandboxは、任意の接続の使い捨てローカルコピーを作成します(ソースは読み取り専用です)。
data: "none":スキーマのみをコピーします。DDLを試すのに最適です。data: "sample":テーブルごとに最大rows行をコピーします。実際の行に対してデータ修正を確認するのに最適です。data: "fake":行を生成します。
サンドボックスのconnection_idに対して任意の操作を実行できます。ユーザーはワンクリックで破棄できます。削除はできません。list_sandboxesを使用して、以前作成したサンドボックスを再利用します。
PostgreSQL 拡張機能
list_extensionsは、サーバーがインストールできる拡張機能と既にインストールされているものを表示します。add_extensionは1つインストールします(CREATE EXTENSION IF NOT EXISTS)。スキーマ変更として扱ってください。共有データベースまたは本番データベースでは、実行する前に提案してください。また、リポジトリにマイグレーションツールがある場合は、他の環境でも取得できるようにそこに追加してください。