Не получается заставить ODBC работать с MariaDB.

Вопрос или проблема

Linux Mint 20 (Ubuntu 20).

Версия MariaDB:
“mariadb Ver 15.1 Distrib 10.7.3-MariaDB, для debian-linux-gnu (x86_64) с использованием readline 5.2”

Я хочу запустить LibreOffice Base в качестве интерфейса, используя ODBC.

Я пытался следовать инструкциям MariaDB здесь.

Я поместил файл libmaodbc.so в /usr/lib64/. Я полагаю, что это основной файл соединителя.

Я создал файл /etc/odbcinst.ini следующим образом:

[MariaDB]
Description=MariaDB Connector/ODBC v.3.0
Driver=/usr/lib64/libmaodbc.so
UsageCount=1

и файл /etc/odbc.ini следующим образом:

[localdb]
Description           = Соединение MariaDB с базой данных
Driver                = MariaDB
Database              = localdb
Server                = localhost
User                  = root
Password              = root
Port                  = 3306
Socket                = /var/run/mysqld/mysqld.sock

Когда я пытаюсь подключиться с помощью LO Base, эта запись ODBC “localdb” видна. Но когда я тестирую соединение, я получаю:

"[unixODBC][Driver Manager]Имя источника данных не найдено, и драйвер по умолчанию не указан"

“Имя источника данных”? “драйвер по умолчанию”?

Кто-нибудь знает, что мне делать? Моя теория состоит в том, что файл odbc.ini ссылается на файл odbcinst.ini, который, в свою очередь, запускает файл libmaodbc.so.

Заметьте, если я попытаюсь фактически установить соединение, то есть получить список таблиц в базе данных в LO Base, я получаю

“Не удалось установить соединение с источником данных “xxx”*

[ma-3.1.15]Невозможно подключиться к локальному серверу через сокет ‘/var/run/mysqld/mysqld.sock’ (13)”

* то есть имя файла LO Base без расширения “.odb”.

А также, чтобы проверить мой сокет (при запущенной службе MariaDB):

mike@M17A:~/MariaDB_files$ netstat -ln | grep mysql
unix  2      [ ACC ]     STREAM     LISTENING     263752   /var/run/mysqld/mysqld.sock

… интересно: похоже, что сокет работает и функционирует нормально.

Также я могу подключиться, используя isql localdb из командной строки: разве это не указывает на то, что все настроено корректно?

Библиотека расположена в lib64, поэтому можно предположить, что это 64-разрядная версия, но она определена как 32-разрядная.

Проверьте вашу папку /usr/lib/, в ней также должен быть файл libmaodbc.so, но это будет 32-разрядная версия.

Затем измените определение драйвера на:

[MariaDB]
Description=MariaDB Connector/ODBC v.3.0
Driver=/usr/lib/libmaodbc.so
Driver64=/usr/lib64/libmaodbc.so
UsageCount=1

Ответ или решение

Не удается настроить ODBC с MariaDB? Давайте разберемся по шагам, чтобы выявить и устранить возможные проблемы.

1. Проверка версии и архитектуры ODBC-драйвера

Сначала необходимо уточнить, какая версия ODBC-драйвера установлена и соответствует ли она архитектуре вашей системы. Вы указали, что у вас установлен драйвер MariaDB версии 3.0 и библиотека libmaodbc.so находится в директории /usr/lib64/. Это предполагает, что вы используете 64-битную версию драйвера. Однако, как заметили другие пользователи, также стоит проверить наличие 32-битной версии драйвера.

Для этого выполните команду:

ls /usr/lib

Если там отсутствует libmaodbc.so, то вам потребуется установить 32-битную версию, если вы используете 32-битный LibreOffice или систему.

2. Настройка файлов конфигурации ODBC

Вы правильно создали и настроили файлы odbcinst.ini и odbc.ini. Однако важно убедиться, что они правильно настроены для вашей архитектуры. Вот как вы можете обновить odbcinst.ini для более точной указания драйвера:

[MariaDB]
Description=MariaDB Connector/ODBC v.3.0
Driver=/usr/lib/libmaodbc.so
Driver64=/usr/lib64/libmaodbc.so
UsageCount=1

Это позволит системе правильно использовать 32-битные и 64-битные версии драйвера в зависимости от запрашиваемого приложения.

3. Проверка подключения

Поскольку вы можете подключаться через isql localdb, это свидетельствует о том, что сама конфигурация ODBC может быть правильной. Тем не менее, ошибка [unixODBC][Driver Manager]Data source name not found, and no default driver specified указывает на то, что LibreOffice не может найти указанный источник данных. Это может произойти по разным причинам:

  • Неверно указанный драйвер: Убедитесь, что в файле odbc.ini указано правильное название драйвера:
    Driver=MariaDB
  • Проблемы с правами доступа: Ошибка [ma-3.1.15] Can't connect to local server through socket '/var/run/mysqld/mysqld.sock' (13) может говорить о проблемах с правами доступа. Проверьте, что у вашего пользователя есть разрешение на доступ к сокету MariaDB. Возможно, вам стоит попробовать запустить LibreOffice от имени суперпользователя (sudo) или корректировать права доступа к сокету.

4. Тестирование соединения

После выполнения настроек попробуйте переподключиться в LibreOffice Base и протестировать соединение еще раз. Убедитесь, что сервер MariaDB запущен, выполните:

sudo systemctl status mariadb

5. Логирование и отладка

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

cat /var/log/mysql/error.log

Заключение

Следуя вышеописанным шагам, вы сможете устранить большинство распространенных проблем с настройкой ODBC для MariaDB в LibreOffice. Важно помнить, что правильная архитектура, корректные пути и правильная конфигурация — это базовые элементы для успешного подключения. При необходимости не стесняйтесь обращаться за поддержкой к специализированным форумам или IT-сообществам, где вы сможете найти более индивидуальные решения для своей проблемы.

Оцените материал
Добавить комментарий

Капча загружается...