阿里云ESC服務器MySQL導入sql數據所采的坑
最近,需要將在“西部數碼”的一臺服務器上的MySQL數據導入到“阿里云”ESC服務器中的MySQL。遇到了以下問題,并已經解決,供需要到網友參考。
1、無法訪問阿里云ESC服務器上的MySQL
(1)問題
在阿里云ESC服務器上安裝MySQL服務器后,需要在阿里云控制臺的ECS安全組中,添加入站規則允許訪問3306端口。
測試服務器端口是否能夠訪問的方法:
telnet x.x.x.x 3306
tcping x.x.x.x 3306
但是,在阿里云ESC服務器放行3306端口后,程序仍然無法訪問阿里云上的MySQL服務器。
(2)解決辦法
經過檢查,發現還需要在寶塔面板中放行端口3306才行。注意:root 用戶不能遠程訪問,只能使用數據庫用戶遠程訪問.
在寶塔面板的"安全"頁面,添加放行入站規則: 端口3306,協議TCP ,問題解決

2、為MySQL導入sql數據時報錯 ERROR 1273 (HY000): 包含未知的編碼格式!
(1)從“西部數碼”服務器上的MySQL中導出sql數據“sky_take_out-結構和數據.sql”
(2)在“阿里云”ESC服務器MySQL添加數據庫 sky_take_out
(3)添加數據庫 sky_take_out 后,點擊該數據庫下面的“備份”>>“導入”>>“從本地上傳”
“sky_take_out-結構和數據.sql”
點擊“開始上傳”,顯示“導入成功”。
但是,這只是導入sql文件成功了,下面還需要從已經上傳的sql文件中導入數據到MySQL服務器。
(4)當從已經上傳的“sky_take_out-結構和數據.sql”文件中導入數據到MySQL服務器時,報錯:ERROR 1273 (HY000): 包含未知的編碼格式!


(5)在AI中提問后得知,這個錯誤的主要原因是:
A、導出的SQL文件來自MySQL 8.0或更高版本,而目標服務器運行的是MySQL 5.7或更低版本
B、MySQL 8.0引入了新的字符集排序規則(如utf8mb4_0900_ai_ci),這些在低版本MySQL中不存在
C、寶塔面板默認安裝的MySQL版本可能較低,不支持高版本的字符集
(6)解決方案
修改SQL文件中的字符集(推薦)-測試OK。這是最常見的解決方法,適用于大多數情況:
A、使用文本編輯器(如VS Code、Notepad++等)打開SQL文件
B、全局替換以下內容:
* 將“utf8mb4_0900_ai_ci”替換為“utf8_general_ci”
* 將“utf8mb4”替換為“utf8”
* 另外還需將原來“西部數碼”的服務器IP替換為“阿里云”服務器IP,否則圖片等網站資源無法訪問
C、保存修改后的SQL文件
D、重新導入下面修改后的文件:“sky_take_out-結構和數據-utf8_general_ci-OK.sql”,再從上傳的該文件中導入數據到MySQL服務器成功。

浙公網安備 33010602011771號