Вопрос или проблема
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-сообществам, где вы сможете найти более индивидуальные решения для своей проблемы.