"Ошибка в удаленной системе: 0" при использовании FederatedX на MariaDB
Я использую MariaDB 10.1 64x и испытываю ошибку с движком FederatedX. Сначала я создаю сервер:
CREATE SERVER AAA_fed
Foreign data Wrapper mysql_1
OPTIONS (
User 'user1',
password 'password',
host 'x.x.x.x',
Port 3306,
database 'AAA'
);
а затем создайте федеративную таблицу, используя соединение с сервером.
CREATE TABLE table1
ENGINE = FEDERATED
CONNECTION='AAA_fed';
Таблица создана успешно, но при выборе данных из нее она выдает ошибку:
Код ошибки: 1296. Получена ошибка 10000 "Ошибка в удаленной системе: 0:" из FEDERATED
Кто-нибудь знает решение этой проблемы? Я продолжаю искать, но не могу найти ответ. Спасибо.
2 ответа
Решение
WRAPPER
должен быть признанным протоколом соединения.
Пример:
MariaDB [(none)]> SELECT VERSION();
+--------------------------+
| VERSION() |
+--------------------------+
| 10.1.14-MariaDB-1~xenial | -- 64 bit
+--------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> DROP DATABASE IF EXISTS `BBB`;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> DROP DATABASE IF EXISTS `AAA`;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS `AAA`;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS `BBB`;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE TABLE IF NOT EXISTS `AAA`.`table1` (
-> `id` int(20) NOT NULL,
-> `name` varchar(64) NOT NULL default ''
-> ) ENGINE='InnoDB';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> DROP SERVER IF EXISTS `AAA_fed`;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE SERVER IF NOT EXISTS `AAA_fed`
-> FOREIGN DATA WRAPPER `mysql_1` -- <-- Unsupported
-> OPTIONS (
-> HOST 'x.x.x.x',
-> DATABASE 'AAA',
-> USER 'user1',
-> PASSWORD 'password',
-> PORT 3306,
-> SOCKET '/path/to/mysqld.sock',
-> OWNER 'user1'
-> );
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> CREATE TABLE IF NOT EXISTS `BBB`.`table1`
-> ENGINE=FEDERATED CONNECTION='AAA_fed';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SELECT `id`, `name` FROM `BBB`.`table1`;
ERROR 1296 (HY000): Got error 10000 'Error on remote system: 0: ' from FEDERATED
MariaDB [(none)]> DROP TABLE IF EXISTS `BBB`.`table1`;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> DROP SERVER IF EXISTS `AAA_fed`;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> CREATE SERVER IF NOT EXISTS `AAA_fed`
-> FOREIGN DATA WRAPPER `mysql` -- <-- Supported
-> OPTIONS (
-> HOST 'x.x.x.x',
-> DATABASE 'AAA',
-> USER 'user1',
-> PASSWORD 'password',
-> PORT 3306,
-> SOCKET '/path/to/mysqld.sock',
-> OWNER 'user1'
-> );
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> CREATE TABLE IF NOT EXISTS `BBB`.`table1`
-> ENGINE=FEDERATED CONNECTION='AAA_fed';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SELECT `id`, `name` FROM `BBB`.`table1`;
Empty set (0.00 sec)
Есть еще одна причина этой ошибки. Это происходит, когда вы создали объединенную таблицу, указывающую на таблицу на том же сервере.