Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


15.8.2.1 CONNECTION を使用した FEDERATED テーブルの作成

最初の方法を使用するには、CREATE TABLE ステートメントのエンジンタイプの後ろに CONNECTION 文字列を指定する必要があります。例:

CREATE TABLE federated_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    name   VARCHAR(32) NOT NULL DEFAULT '',
    other  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name),
    INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';
注記

CONNECTION は MySQL の以前のバージョンで使われた COMMENT を置き換えるものです。

CONNECTION 文字列には、データを物理的に格納するために使用されるテーブルを含む、リモートサーバーへの接続に必要な情報が含まれています。接続文字列には、サーバー名、ログイン資格証明、ポート番号、およびデータベース/テーブル情報を指定します。この例では、リモートテーブルはサーバー remote_host 上にあり、ポート 9306 を使用します。名前とポート番号は、リモートテーブルとして使用するリモート MySQL サーバーのホスト名 (または IP アドレス) とポート番号に一致するべきです。

接続文字列の書式は次のとおりです。

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

ここでは:

  • scheme: 認識された接続プロトコル。この時点では、mysql だけが scheme 値としてサポートされています。

  • user_name: 接続のためのユーザー名。このユーザーは、リモートサーバー上に作成されている必要があり、リモートテーブルで必要なアクション (SELECTINSERTUPDATE など) を実行するのに適した権限を持つ必要があります。

  • password: (オプション) user_name に対応するパスワード。

  • host_name: リモートサーバーのホスト名または IP アドレス。

  • port_num: (オプション) リモートサーバーのポート番号。デフォルトは 3306 です。

  • db_name: リモートテーブルを保持するデータベースの名前。

  • tbl_name: リモートテーブルの名前。ローカルテーブルとリモートテーブルの名前が一致する必要はありません。

接続文字列の例は次のとおりです。

CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'

User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
  Posted by ALEXANDER SKAKUNOV on March 22, 2013
If you use PHPMyAdmin, you should know that if the connection string is wrong, e.g. contains an obsolete password, all the tables in PhpMyAdmin are not shown — just disappear; they remain in database though (That's what I bumped into while working on http://dobrotvor.com/ ).

The solution is to use CREATE SERVER option. Disadvantage of CREATE SERVER is that it's available only in recent versions of MySQL — but your connection string is defined in one place, not in every FEDEDATED table anymore.