3.5 运行 C API 客户端程序

如果在升级后,您遇到了编译的客户端程序的问题,例如 命令不同步 或意外的内核转储,则这些程序可能是使用旧的标头或库文件编译的。在这种情况下,请检查用于编译的 mysql.h 标头文件和 libmysqlclient.a 库的日期,以验证它们是否来自新的 MySQL 发行版。如果不是,请使用新的标头和库重新编译程序。如果共享客户端库的主版本号已更改(例如,从 libmysqlclient.so.17 更改为 libmysqlclient.so.18),则可能还需要重新编译针对共享客户端库编译的程序。

共享客户端库的主要版本决定了兼容性。(例如,对于 libmysqlclient.so.18.1.0,主版本为 18。)与较新版本的 MySQL 一起提供的库是具有相同主版本号的旧版本的直接替换。只要主要库版本相同,您就可以升级库,旧应用程序应该继续使用它工作。

当您尝试执行 MySQL 程序时,在运行时可能会出现未定义的引用错误。如果这些错误指定以 mysql_ 开头的符号,或者指示找不到 libmysqlclient 库,则意味着您的系统找不到共享的 libmysqlclient.so 库。解决此问题的办法是告诉您的系统在 libmysqlclient.so 库所在的目录中搜索共享库。使用以下方法中适合您系统的方法

  • libmysqlclient.so 所在目录的路径添加到 LD_LIBRARY_PATHLD_LIBRARY 环境变量中。

  • 在 macOS 上,将 libmysqlclient.dylib 所在目录的路径添加到 DYLD_LIBRARY_PATH 环境变量中。

  • 将共享库文件(例如 libmysqlclient.so)复制到系统搜索的某个目录,例如 /lib,并通过执行 ldconfig 更新共享库信息。请确保复制所有相关文件。共享库可能以多个名称存在,使用符号链接提供备用名称。