あなたのシナリオで考えられる4つの回避策を考えることができます:
- external を照会するときは、完全修飾テーブル名を使用してください テーブル。 MySQLは
dbname.tablename
をサポートしています -現在のデータベーススコープ外のテーブルにアクセスするための構文。これには、現在接続しているユーザーが、別の物理データベース内の要求されたテーブルから読み取るための適切な権限を持っている必要があります。 - 外部データベースが別のMySQLサーバー(同じマシン上またはネットワーク接続経由)で実行されている場合は、レプリケーションを使用して、リモートテーブルの読み取り専用コピーを常に更新できます。 レプリケーションは、2つの別々のMySQLインスタンスを実行している場合にのみ可能です。
-
FEDERATED コード> MySQLストレージエンジン
実質的にインポートする テーブルを現在のデータベースに追加します。これにより、CREATE TABLE
で資格情報が与えられるため、現在のユーザーに2番目のデータベースへのアクセス権を与える必要がなくなります。 -FEDERATED
を使用する場合のステートメント ストレージエンジン。これは、さまざまな物理サーバーまたはさまざまなMySQLインスタンスで実行されているデータベースでも機能します。これはパフォーマンスが最も低いオプションであり、制限 -使用シナリオと要件に応じて、多かれ少なかれ重要です。 - これはメソッド1の拡張です。外部に情報を要求するたびに完全修飾テーブル名を指定する必要はありません。 テーブルでは、ビュー
を作成するだけです。 単純な
SELECT<
> FROM < >。< >に基づく現在のデータベース内 。これは、
FEDERATED
の方法に似ています -メソッドは機能しますが、同じMySQLインスタンス上のテーブルに制限されます。個人的には、方法(4)が最も便利だと思いますが、要件によっては、他の方法も可能な回避策になる可能性があります。