MySQL export import 紀錄
Table of Contents
#
Intro
紀錄一下 MySQL 匯出與匯入資料的一些情況
#
匯出
mysqldump --column-statistics=0 -u <user> -h <host> -P 3306 -p <database> > output_file.sql
--column-statistics=0
忽略掉一些匯出時的一些資訊, 節省容量
匯出資料庫中個別的 table
mysqldump --column-statistics=0 -u <user> -h <host> -P 3306 -p <database> <table> > output_file.sql
#
匯入
mysql -u <user> -h <host> -P 3306 -p <database> < ./file.sql
如果要忽略一些錯誤並強制執行可以添加 -f
mysql -f -u <user> -h <host> -P 3306 -p <database> < ./file.sql
#
troubleshooting
#
如果遇到有 table 的欄位是使用 binary 的形式像是 point 匯出時在匯入會出現格式錯誤
如果欄位中有以 point
的型態儲存經緯度數據
有可能會出現這個問題 ERROR 1416 (22003): Cannot get geometry object from data you send to the GEOMETRY field
這時候就需要添加 --hex-blob
參數
mysqldump — A Database Backup Program
mysqldump --column-statistics=0 --hex-blob -u <user> -h <host> -P 3306 -p <database> > file.sql
#
如果遇到匯入時的權限而且無法改變要匯入的 mysql 的使用者的權限時
出現像是 Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation
的錯誤
而且你使用的 user 是無法透過
GRANT SUPER ON *.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
等指令改權限
可以移除掉 .sql 中部分的內容來略過
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
Access denied; you need (at least one of) the SUPER privilege(s) for this operation