將高版本mysql資料庫的資料匯入低版本mysql中

天府雲創發表於2018-01-08

前言

最近做了個網站,準備放到虛擬主機上的時候,發現本地資料庫是mysql5.6,伺服器上的mysql是5.0的。於是嘗試匯出資料,結果,匯入的資料不是出錯,就是各種亂碼。折騰了好久之後,終於找到了解決之道,特來水一貼,分享一發。

建議是在資料遷移的時候版本差距別太大,有可能會出現版本相容問題。


方法

之前用的是phpmyadmin匯出的,即使設定了mysql匯出相容低版本,還是有問題。後來,想到了電腦上還裝了個navicat for mysql,開啟一看,果然可以將高版本mysql資料庫中的資料無傷匯入低版本mysql中。前提是你裝了navicat for mysql,步驟: 
1. 開啟navicat for mysql,選擇你要匯出的資料庫,然後右鍵 
這裡寫圖片描述 
2. 設定屬性,選擇對應的mysql版本即可,然後開始 
這裡寫圖片描述

總結

高版本mysql和低版本mysql之間會有相容性問題,一不小心就可能導致亂碼或者錯誤。”Unknown collation: ‘utf8mb4_unicode_ci”錯誤問題。

不同的msyq版本和不同的mysql驅動會出現不相容問題


com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
	解決辦法是 重新下載mysql 並使用相同版本的  驅動。。。結果就沒有問題了。
	後來,我又重新用了之前的驅動,結果也沒有問題。所以我覺得應該是我之前的mysql資料庫出問題了。
	看網上說,最好用較高版本的的驅動,這樣會向下相容。

mysql5.x升級到mysql5.7後匯入之前資料庫date出錯的快速解決方法【mysql低版本資料匯入到高版本出錯】

【具體參考:mysql的sql_mode詳解
修改mysql5.7的配置檔案即可解決,方法如下:
 linux版:找到mysql的安裝路徑進入預設的為/usr/share/mysql/中,進行對my-default.cnf編輯利用查詢功能"/"找 
到"sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"將其刪除或者是註釋即可。

 Windows版:

    32位找到mysql安裝路徑直接修改my.ini檔案利用ctrl+f搜尋出來的內容
 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"將其註釋或者是刪除即可。

  64位需要進入windows的安裝目錄下XXX\MySQL Server 5.7\Data,修改配置檔案my.ini,利用ctrl+f搜尋出來
 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"將其註釋者刪除即可。


高版本mysql匯入低版本mysql的方法解決資料庫亂碼的問題


用PHP+mysql開發的網站經常會遇到mysql資料庫版本不同導致遷移網站資料時經常出現:匯入不成功,如出現資料庫臭蟲,匯入後是亂碼等問題

邦明科技遷移mysql資料庫的方法是: 



高版本mysql匯入低版本mysql的方法:


1.從高版本的mysql預設匯出utf-8為mysql.sql


2.用記事本開啟mysql.sql


3.去掉含有/*!40101 符號的註釋行


4.複製所有記事本里的sql語句


5.開啟低版本的mysql資料庫,然後點選查詢SQL,將複製的SQL程式碼貼上到SQL查詢框中執行


6.這樣就成功將高版本的mysql匯入到低版本的mysql,並解決了亂碼問題


 

之前做的很多失敗過程: 


1.刪除頭尾:/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;匯入utf-8無法匯入,出錯


2.另存為ansi 匯入utf-8可以匯入,亂碼,無法顯示


3.另存為:unicode 匯入utf-8無法匯入,出錯


4.另存為unicode 替換utf-8為latin1 匯入utf-8無法匯入,出錯


5.另存為unicode 替換utf8為latin1 匯入utf-8無法匯入,出錯



相關文章