ホームページ  >  記事  >  データベース  >  mysqlリモートクロスデータベース共同クエリを実装する方法

mysqlリモートクロスデータベース共同クエリを実装する方法

PHPz
PHPz転載
2023-06-02 22:32:522042ブラウズ

状況 1: 2 つのライブラリが同じ物理ホスト上にあります

mysqlリモートクロスデータベース共同クエリを実装する方法

共同クエリ (2 つの異なるライブラリ、myemployees ライブラリと shoppingCart ライブラリ)、これら 2 つのライブラリは同じ上にあります各物理ホストでは、それらはすべてローカル マシン上にあります。

mysqlリモートクロスデータベース共同クエリを実装する方法

#联合查询(不同的2个库,myemployees库和shoppingCart库)
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;
#
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION ALL
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;

シナリオ 2: 2 つのライブラリが同じ物理ホスト上にありません (つまり、2 つのライブラリが異なる物理ホスト上にあります)

順番に効果を実証するために、私はここにいます 仮想マシンを使用して、仮想マシンに Linux システム (centos) をインストールしました。MySql データベースが Linux システムにインストールされ、MySql データベース サービスが開始され、すべての環境が完了しました。お世話になりました。

私の Linux システム (centos) の IP は 192.168.117.66 です。 ################################################ #私ローカルの作成者テーブルとリモートのユーザー テーブルの間で共同クエリを実行することを計画しています。

Linux で SHOW CREATE TABLE `user`; と入力して結果を取得した後、mysqlリモートクロスデータベース共同クエリを実装する方法

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)

このコードをローカル データベースにコピーし、

mysqlリモートクロスデータベース共同クエリを実装する方法

ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';这句话。
を追加しました

mysqlリモートクロスデータベース共同クエリを実装する方法

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';

mysqlリモートクロスデータベース共同クエリを実装する方法 が最後にあります。実際、上記のステートメントは、率直に言うと、ローカル データベースにリモート データベース接続を作成することです。ショートカット (リモート データベース接続)ショートカット)

、何に似ていますか?これは、ウィンドウ オペレーティング システムのデスクトップにあるデスクトップ ショートカットと似ており、デスクトップをダブルクリックするとソフトウェア アイコンを開くことができ、同じ原理です。

mysqlリモートクロスデータベース共同クエリを実装する方法

上記のステートメントを実行するだけです。

ところで、もう 1 つ注意すべき点があります。

ローカルの

FEDERATED エンジン

が有効かどうかを確認する必要があります。 mysql データベースがオンになっていません。 mysqlリモートクロスデータベース共同クエリを実装する方法

SHOW ENGINES;

FEDERATED が NO の場合、有効になっていないため、mysql データベースの構成ファイルを変更する必要があることを意味します。

#ローカル mysql データベースの構成ファイルを変更し、以下に示すように、構成ファイルの最後に

federated を追加します。 #Windows の場合 Linux システムの場合は、my.ini

ファイルを変更します Linux システムの場合は、

my.cnf ファイルを変更します。

#設定ファイルを変更した後は、必ず mysql サービスを再起動してください。

linux は mysql サービス、service mysqld restartmysqlリモートクロスデータベース共同クエリを実装する方法 を再起動します。

Windows が mysql サービスを再起動します。dos ウィンドウで net stop mysql サービス名を入力し、次に net start mysql サービス名 を入力します。

OK、すべてが完了したら、次の SQL ステートメントを実行して、クロスデータベース クエリのクエリ結果を確認します。

#
SELECT id, aname FROM author
UNION
SELECT id, `name` FROM `user`;

SELECT * FROM author INNER JOIN  `user`;

mysqlリモートクロスデータベース共同クエリを実装する方法

上記のクロスサーバーおよびクロスデータベースクエリでは、次の点に注意する必要があります。 :

1. このクロスデータベース クエリ方法はトランザクションをサポートしていないため、トランザクションを使用しないことをお勧めします。 2. テーブル構造は変更できません。

3.MySQL はこのクロスデータベース クエリ方式を使用します。リモート データベースは現在 MySQL のみをサポートしており、他のデータベースはそれをサポートしていません。 4. テーブル構造は、ターゲット データベース テーブルと完全に一致している必要があります。

以上がmysqlリモートクロスデータベース共同クエリを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。