如果在升级之后,您在已编译的客户机程序上遇到问题,例如命令不同步
或者意外的核心转储,程序可能是使用旧的头文件或库文件编译的。在这种情况下,检查日期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
位于LD_LIBRARY_PATH
或LD_LIBRARY
环境变量。在macOS上,添加目录的路径
libmysqlclient.dylib
位于DYLD_LIBRARY_PATH
环境变量。复制共享库文件(例如
libmysqlclient.so
)到系统搜索的某个目录,例如/ lib
,并通过执行命令更新共享库信息ldconfig
.一定要复制所有相关文件。共享库可能存在于多个名称下,使用符号链接提供替代名称。
如果应用程序链接到嵌入式服务器库,则运行时错误消息将指示libmysqld
而不是libmysqlclient
但是问题的解决方案与刚才描述的是一样的。