3

MariaDB 10.1.12 の Federated エンジンを使用して、リモート データベースのテーブルに基づくテーブルを作成しようとしています。FederatedX実装の使用方法に関するMariaDBの指示に従って、データベースdb1でテーブルを次のように作成します

CREATE TABLE test_table (
  id     int(20) NOT NULL auto_increment,
  name   varchar(32) NOT NULL default '',
  other  int(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY name (name),
  KEY other_key (other))
DEFAULT CHARSET=latin1;

db2Federated エンジンを使用して 2 番目のデータベースでこのテーブルを表示したい場合は、

CREATE TABLE test_table (
  id     int(20) NOT NULL auto_increment,
  name   varchar(32) NOT NULL default '',
  other  int(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY name (name),
  KEY other_key (other)
) ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://user_x:pass_y@localhost/db1/test_table';

これはすべてMariaDBのドキュメントからコピーされたもので、うまく機能します。ただし、テーブル構造の定義を明示的に複製せずにテーブルを作成しようとすると、同じドキュメントに記載されている例

CREATE TABLE test_table ENGINE=FEDERATED DEFAULT CHARSET=latin1
CONNECTION='mysql://user_x:pass_y@localhost/db1/test_table';

MariaDB がエラーで応答する

ERROR 1113 (42000): A table must have at least 1 column

何か不足していますか、それとも個々の列を指定せずに連合テーブルを使用することはできませんか?

4

1 に答える 1

3

Ubuntu 14.04 での MariaDB の標準インストールでは、新しい FederatedX バリアントではなく、古い Federated エンジンがアクティブになっているようです。列の自動検出をサポートするのは後者だけです。これを修正するために、次の手順を実行しました。

uninstall soname 'ha_federated';

フェデレーション プラグインを削除します。サーバーの再起動後、正しいサーバーがロードされます

install plugin federated soname 'ha_federatedx';

これにより、列の自動検出をサポートする新しい FederatedX 実装が読み込まれます。インストールされているエンジンを表示するには、次のようにリストします。

show engines;

すべてが正しければ、出力に次の行が表示されます。

| FEDERATED          | YES     | FederatedX pluggable storage engine |
于 2016-05-14T13:31:56.000 に答える