Spec-Zone.ru › MariaDB

Ошибка: символ mysql_get_server_name, версия libmysqlclient_16 не определена

Если вы видите сообщение об ошибке:

symbol mysql_get_server_name, version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference

…то, вероятно, вы пытаетесь использовать командную строку клиента MySQL от MariaDB с libmysqlclient.so от MySQL.

Символ mysql_get_server_name() присутствует в дереве исходного кода MariaDB, но отсутствует в дереве исходного кода MySQL.

Если у вас установлены как пакет клиента MariaDB, так и пакеты клиентов MySQL, эта ошибка возникнет, если ваша система сначала обнаружит версию MySQL от libmysqlclient.so.

Чтобы определить, какая библиотека подключается динамически (т.е., неправильная), используйте инструмент 'ldd'.

ldd $(which mysql) | grep mysql

или

ldd /path/to/the/binary | grep mysql

Например:

me@mybox:~$ ldd $(which mysql)|grep mysql
        libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0xb74df000)

Затем вы можете использовать инструменты менеджера пакетов, чтобы узнать, к какому пакету принадлежит библиотека.

В CentOS команда для определения пакета, установившего определенный файл, выглядит так:

rpm -qf /path/to/file

В системах на базе Debian команда выглядит так:

dpkg -S /path/to/file

Вот пример определения библиотеки и выяснения, к какому пакету она относится в системе Ubuntu:

me@mybox:~$ ldd $(which mysql)|grep mysql
	libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0xb75f8000)
me@mybox:~$ dpkg -S /usr/lib/libmysqlclient.so.16
libmariadbclient16: /usr/lib/libmysqlclient.so.16

Выше показано, что командная строка клиента MySQL использует библиотеку /usr/lib/libmysqlclient.so.16 и что эта библиотека входит в пакет libmariadbclient16 Ubuntu. Неудивительно, что в этой системе командная строка клиента MySQL работает отлично.

Если бы полученный ответ был связан с пакетом не MariaDB, то, вероятно, возникли бы проблемы при запуске приложения клиента MariaDB mysql.

Если библиотека, которую система пытается использовать, не из пакета MariaDB, решение состоит в удалении проблемного пакета (и, возможно, установке или повторной установке правильного пакета), чтобы можно было использовать правильную библиотеку.

Содержание, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержание не проходит предварительной проверки со стороны MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/error-symbol-mysql_get_server_name-version-libmysqlclient_16-not-defined/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API