首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

本地 MySQL 遷移至 SAE (新浪雲) 完整操作指南:字符集統一、匯出匯入、LOCK 錯誤解決

     編輯:MySQL 綜合教學

前置條件:字符集全鏈路統一為 UTF8MB4

# 1. 檢查本地字符集
mysql> SHOW VARIABLES LIKE 'character_set_%';
# 確認 client/connection/results/database/server 均為 utf8mb4

# 2. 修改本地 my.cnf (永久生效)
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'

# 3. 重啟驗證
systemctl restart mysqld
mysql> SHOW VARIABLES LIKE 'character_set_%';

步驟 1:本地匯出 (含結構+資料+觸發器+存儲過程)

mysqldump -h localhost -u root -p \
  --default-character-set=utf8mb4 \
  --set-charset=utf8mb4 \
  --hex-blob \
  --single-transaction \
  --routines --triggers --events \
  --databases mydb > /tmp/mydb_sae.sql

步驟 2:處理 SAE 不支援的語句

# SAE MySQL 禁用 LOCK TABLES、SUPER 權限操作
# 編輯 SQL 檔移除/註解以下行:
sed -i '/LOCK TABLES/d' /tmp/mydb_sae.sql
sed -i '/UNLOCK TABLES/d' /tmp/mydb_sae.sql
sed -i '/SET @@SESSION.SQL_LOG_BIN/d' /tmp/mydb_sae.sql
sed -i '/CHANGE MASTER/d' /tmp/mydb_sae.sql
# 或手動編輯器批次刪除

步驟 3:SAE 控制台匯入

  1. 登入 SAE 控制台 → 我的應用 → 服務管理 → MySQL → 管理 MySQL
  2. 點擊「匯入」
  3. 選擇檔案:/tmp/mydb_sae.sql
  4. 檔案字符集:**UTF-8**
  5. SQL 相容模式:**MYSQL40** (舊版) 或 **ANSI** (新版)
  6. 點擊「開始匯入」

步驟 4:驗證與應用配置

# 1. 在 SAE phpMyAdmin 或命令列驗證
mysql -h SAE_MYSQL_HOST -P SAE_MYSQL_PORT -u SAE_MYSQL_USER -p
USE mydb;
SHOW TABLES;
SELECT * FROM users LIMIT 5;

# 2. PHP 應用配置 (SAE 環境變數自動注入)
$link = mysqli_connect(
    SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,
    SAE_MYSQL_USER,
    SAE_MYSQL_PASS,
    SAE_MYSQL_DB
);
mysqli_set_charset($link, 'utf8mb4');

常見錯誤與解決

錯誤原因解決
ERROR 1227: Access denied; you need SUPER privilegeSQL 含 SET GLOBAL/CHANGE MASTER 等移除相關行,SAE 僅提供普通權限
ERROR 1142: LOCK TABLES command deniedmysqldump 預設加 --lock-tables匯出加 --single-transaction (InnoDB) 或匯入前移除 LOCK 行
中文亂碼字符集不一致全鏈路 utf8mb4、檔案編碼 UTF-8、匯入選 UTF-8
匯入卡住/超時大表、無索引、網路慢分表匯出、壓縮傳輸、離峰匯入

SAE MySQL 限制須知

  • 無 SUPER、FILE、SHUTDOWN 權限
  • 不支援 LOAD DATA INFILE、SELECT INTO OUTFILE
  • 連線數、查詢時間、結果集大小有配額限制
  • 不支援自定義函式 (UDF)、插件
  • 建議使用 SAE 內建 KVDB、Counter 替代高頻計數

遷移清單

  1. ☐ 本地字符集統一 utf8mb4
  2. ☐ mysqldump 含 --single-transaction --hex-blob --routines --triggers --events
  3. ☐ 移除 LOCK/UNLOCK/SET GLOBAL/CHANGE MASTER
  4. ☐ SAE 匯入選 UTF-8、MYSQL40/ANSI
  5. ☐ 應用配置切換 SAE 環境變數
  6. ☐ 灰度驗證核心業務流程
  7. ☐ 切換 DNS、下線舊庫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved