Как создать федеративную таблицу в MariaDB без указания столбцов

Я пытаюсь использовать объединенный механизм MariaDB 10.1.12 для создания таблиц, основанных на таблицах в удаленной базе данных. Следуя инструкциям MariaDB о том, как использовать реализацию FederatedX, в базе данных 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;

Теперь, когда я хочу увидеть эту таблицу во второй базе данных db2 используя движок Federated, я могу выдать

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

Я что-то упустил или невозможно использовать федеративные таблицы без указания отдельных столбцов?

1 ответ

Решение

Похоже, что при стандартной установке MariaDB в Ubuntu 14.04 активен старый движок Federated, а не новый вариант FederatedX. Только последний поддерживает автообнаружение столбцов. Чтобы исправить это, я предпринял следующие шаги:

uninstall soname 'ha_federated';

удалить федеративный плагин. После перезапуска сервера правильный загружается

install plugin federated soname 'ha_federatedx';

Это загружает новую реализацию FederatedX, поддерживающую автоматическое обнаружение столбцов. Для просмотра установленных двигателей можно перечислить их с помощью

show engines;

Если все правильно, в выводе должна быть следующая строка:

| FEDERATED          | YES     | FederatedX pluggable storage engine |
Другие вопросы по тегам