MySQL Tidak Dikonfigurasikan dengan betul: Menangani Ralat "penggunaan laluan relatif yang tidak selamat"
Apabila menjalankan runserver manage.py Python dengan Django, anda boleh hadapi ralat yang terkenal:
"ImproperlyConfigured: Ralat memuatkan modul MySQLdb: dlopen([path to _mysql.so], 2): Library tidak dimuatkan: libmysqlclient.18.dylib Sebab: penggunaan rpath relatif libmysqlclient yang tidak selamat. 18.dylib dalam [_mysql.so] dengan binari terhad"
Punca:
Dalam macOS El Capitan (10.11), Apple memperkenalkan Perlindungan Integriti Sistem, yang menyekat perlindungan program seperti MySQL daripada memanggil perpustakaan kongsi dengan rujukan relatif kepada perpustakaan lain. Ini adalah isu kerana _mysql.so, perpustakaan kongsi yang diperlukan oleh MySQLdb, mengandungi rujukan relatif kepada libmysqlclient.18.dylib.
Penyelesaian:
Sehingga perpustakaan dikemas kini, anda boleh memaksanya untuk menggunakan rujukan mutlak menggunakan utiliti install_name_tool:
sudo install_name_tool -change libmysqlclient.18.dylib \ /usr/local/mysql/lib/libmysqlclient.18.dylib \ /Library/Python/2.7/site-packages/_mysql.so
Contoh:
Andaikan libmysqlclient. 18.dylib terletak di /Users/Applications/My_Applications/MySQL/lib/, arahannya ialah:
sudo install_name_tool -change libmysqlclient.18.dylib \ /Users/Applications/My_Applications/MySQL/lib/libmysqlclient.18.dylib \ /Library/Python/2.7/site-packages/_mysql.so
Nota:
Penyelesaian ini mungkin tidak berfungsi sehingga anda mengemas kini kepada versi MySQL yang lebih baharu yang menyokong langkah keselamatan macOS El Capitan.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'penggunaan tidak selamat relatif rpath libmysqlclient.18.dylib\' pada macOS El Capitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!