27.7.3.4 运行 C APIClient 端程序

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

主要的共享 Client 端库版本确定兼容性。 (例如,对于libmysqlclient.so.18.1.0,主要版本为 18.)较新版本的 MySQL 附带的库是具有相同主要编号的较早版本的直接替代。只要主要库版本相同,就可以升级库,并且旧的应用程序应 continue 使用它。

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

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

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

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

如果应用程序链接到嵌入式服务器库,则运行时错误消息将指示libmysqld而不是libmysqlclient库,但是解决问题的方法与上述相同。