"Ошибка в удаленной системе: 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)

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

Другие вопросы по тегам