_mysql.so image not found

Referenced from: /Library/Python/2.7/site-packages/_mysql.so
Reason: image not found


這個原本發生在我移掉舊版的 mariadb v10.1 改安裝 mariadb v10.2 或切換 mariadb 為 mysql 時會發生。

網路上解法:

I solved the problem by creating a symbolic link to the library. I.e.

The actual library resides in

/usr/local/mysql/lib

And then I created a symbolic link in

/usr/lib

Using the command:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

so that I have the following mapping:

ls -l libmysqlclient.18.dylib 
lrwxr-xr-x  1 root  wheel  44 16 Jul 14:01 libmysqlclient.18.dylib -> /usr/local/mysql/lib/libmysqlclient.18.dylib

That was it. After that everything worked fine.

EDIT:

Notice, that since MacOS El Capitan the System Integrity Protection (SIP, also known as “rootless”) will prevent you from creating links in /usr/lib/. You could disable SIP by following these instructions, but you can create a link in /usr/local/lib/ instead:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

 

我下了上面的指令,還是無效。

使用 brew unlink mysql 再 brewlink mysql 還是無效。


 

仔細去看上面的 path 發現我電腦裡的實際path 不是那個,所以改成使用:

sudo ln -s /usr/local/Cellar/mysql/5.7.18_1/lib/libmysqlclient.dylib /usr/local/lib/libmysqlclient.18.dylib

然後顯示

ln: /usr/local/lib/libmysqlclient.18.dylib: File exists

所以,把 link 檔案刪掉後,再下一次,結果還是不行。原來是之前 mariadb 的 path 不是在

/usr/local/lib/libmysqlclient.18.dylib

而是在 /usr/local/opt/mariadb/lib/libmysqlclient.18.dylib

所以,先

rm /usr/local/opt/mariadb/lib/libmysqlclient.18.dylib

makedir -p /usr/local/opt/mariadb/lib/
sudo ln -s /usr/local/Cellar/mysql/5.7.18_1/lib/libmysqlclient.dylib /usr/local/opt/mariadb/lib/libmysqlclient.18.dylib

 


大功告成,收工。

Mysql備份與還原資料庫

原來 mysql 的備份還有還原這麼簡單 @[email protected]

備份:

— 備份某個資料庫

mysqldump -u root -p db_name > backup.sql;

— 備份所有資料庫

mysqldump -u root -p --all-databases > backup.sql;

附註:備所有資料庫,遇到 database 版本不同時,會有問題,例如 mysql 5.6 到 5.7 會造成系統預設的欄位長度不符的錯誤。

備份用的 shell script:

#!/bin/sh 
pw='your-password'
mysqldump --all-databases --add-drop-table -h 127.0.0.1 -u root -p$pw > your-backup-file.sql
bzip2 -f your-backup-file.sql

bz2 壓縮:

bzip2 -z FileName

bz2 解壓縮:
bzip2 -d FileName.bz2


還原:

mysql -u root -p < backup.sql

如果出現 no database selected 是因為 backup.sql 裡沒有包括了 create database 的指令,只有去 drop table. 所以要在一還原的地方指定好要被貼回來的 database name:

mysql DATABASE_NAME -u root -p < backup.sql

進階一點的備份:

MySQL 自動備份 Shell Script
http://stackoverflow.max-everyday.com/2018/01/mysql-shell-script/

安裝/啟動 mysql 在 Mac OS

在 DigitalOcean 的 Linux server 上架了 mysql,但我用的是 mariadb,為避免日後有費用上的問題,求可用就好了,所以用的是 mariadb 不是用  mysql。

遠端的Server 一下子就架設好了,但是在開發中和Debug時每次都連去遠端伺服器這樣太沒效率,所以要架設一個開發環境在我開發用的Mac OS X 上,之前也不知道怎麼弄好了,MacBook 好幾個月沒關機,都只有蓋上去,所以 mysql service 沒停下來,今天升級了一下 Mac OS X,重開機後 mysql 指令連不上 service, 也忘記怎麼啟動 mysql service,花了10分鐘google,所以決定還是寫一篇文章給幾個月之後的自己看,方便重啟服務。

screenshot-2016-09-21-17-03-17

啟動 mysql 的方法是:

mysql.server start

由於不是每次開機都會用到 mysql, 所以不設定成自動啟動比較好。

指令連進去mysql的方法是:

mysql -u root


mariadb 官方的文章:
Installing MariaDB 10.0.10 on Mac OS X with Homebrew
https://mariadb.com/blog/installing-mariadb-10010-mac-os-x-homebrew

大致上就是先安裝 Xcode,再安裝 Homebrew,再透過 brew 指令安裝 mariadb 即可。

 


也可以用

brew install mysql

直接安裝 mysql

這個問題比較少,用 mariadb 的問題在,匯入的  mysql 版本太新(5.7),造成舊版mariadb v10.1.x 不支援,要升到 mariadb 10.2.x 需要使用

brew install mariadb –devel

安裝為 devel 版本,我花了10分鐘才make 好,真的滿麻煩的,安裝別人build好的版本通常一分鐘就完成了。


後計:

_mysql.so image not found
http://stackoverflow.max-everyday.com/2017/05/_mysql-so-image-not-found/