MySQL 5.6 C API Developer Guide
If, after an upgrade, you experience problems with compiled
client programs, such as Commands out of sync
or unexpected core dumps, the programs were probably compiled
using old header or library files. In this case, check the date
of the mysql.h
header file and
libmysqlclient.a
library used for
compilation to verify that they are from the new MySQL
distribution. If not, recompile the programs with the new
headers and libraries. Recompilation might also be necessary for
programs compiled against the shared client library if the
library major version number has changed (for example, from
libmysqlclient.so.17
to
libmysqlclient.so.18
).
The major shared client library version determines
compatibility. (For example, for
libmysqlclient.so.18.1.0
, the major version
is 18.) Libraries shipped with newer versions of MySQL are
drop-in replacements for older versions that have the same major
number. As long as the major library version is the same, you
can upgrade the library and old applications should continue to
work with it.
Undefined-reference errors might occur at runtime when you try
to execute a MySQL program. If these errors specify symbols that
start with mysql_
or indicate that the
libmysqlclient
library cannot be found, it
means that your system cannot find the shared
libmysqlclient.so
library. The solution to
this problem is to tell your system to search for shared
libraries in the directory where that library is located. Use
whichever of the following methods is appropriate for your
system:
Add the path of the directory where
libmysqlclient.so
is located to the
LD_LIBRARY_PATH
or
LD_LIBRARY
environment variable.
On macOS, add the path of the directory where
libmysqlclient.dylib
is located to the
DYLD_LIBRARY_PATH
environment variable.
Copy the shared-library files (such as
libmysqlclient.so
) to some directory
that is searched by your system, such as
/lib
, and update the shared library
information by executing ldconfig
. Be
sure to copy all related files. A shared library might exist
under several names, using symlinks to provide the alternate
names.
If the application is linked to the embedded server library,
runtime error messages indicate the libmysqld
rather than libmysqlclient
library, but the
solution to the problem is the same as just described.