If you are using the mysql2 ruby gem on Mac OS X you may have run into this problem before.
> require 'mysql2'
LoadError: dlopen(mysql2-0.2.7/lib/mysql2/mysql2.bundle, 9):
Library not loaded: libmysqlclient.16.dylib
Referenced from: mysql2-0.2.7/lib/mysql2/mysql2.bundle
Reason: image not found - mysql2-0.2.7/lib/mysql2/mysql2.bundle
So far the only solution I have found online is to use install_name_tool
to update the (extremely) relative libmysqlclient.16.dylib
reference to be absolute (usually to /usr/local/mysql/lib/libmysqlclient.16.dylib
).
While this solves the problem, it only works until you reinstall the mysql2 gem or install a newer version and then you have to do it again. To permanently solve it you need to create a symlink of libmysqlclient.16.dylib
to /usr/lib
so that it can be found with that default relative path.
Ideally you wouldn't put it in /usr/lib
but I haven't be able to find a path inside of ruby that will let you load the dylib
.
sudo ln -s /usr/local/mysql/lib/libmysqlclient.16.dylib /usr/lib
Enter your password and then you can use the mysql2
gem without needing to edit the compiled bundle afterwards.
Great article, been trying for so many days to get mysql2 to work, finally it works! Thanks!
Thank you so much – wasted hours a time trying to get past this problem.
Thanks a lot! Makes it so much easier now! Gotta bookmark this post.
is there a windows version of this solution?