Как создать федеративную таблицу в 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 |