Mysql

從 MySQL 8 導出時如何將 mysqldump .sql 文件導入 MySQL 5.7

  • March 17, 2020

我不小心安裝了 MySQL 8 並在那裡做了很多工作,創建了大量數據。然後我使用 mysqldump 備份了所有數據庫。

後來,我意識到我需要降級回 MySQL 5.7(甚至沒有意識到我已經升級了)。

我已經解除安裝了 8 並安裝了 5.7,但是我在從轉儲的 .sql 文件中導入數據時遇到了問題。

首先,我得到了錯誤ERROR 1273 (HY000) at line 1753: Unknown collation: 'utf8mb4_0900_ai_ci',我通過使用 Notepad++ 替換解決了這個問題:

  • utf8mb4_0900_ai_ciutf8_unicode_ci
  • utf8mb4utf8
  • utf8_unicode_520_ciutf8_unicode_ci

然後我還刪除了 .sql 文件中與“mysql”數據庫相關的部分。

現在命令mysql < alldb.sql執行沒有錯誤,但是當我查看我的數據時,很多數據都失去了。

PS 我對有人可以幫助我感到樂觀,但MySQL 8 文件說有點令人擔憂:

不支持從 MySQL 8.0 降級到 MySQL 5.7,或從 MySQL 8.0 版本降級到以前的 MySQL 8.0 版本。唯一受支持的替代方法是恢復升級前的備份。因此,您必須在開始升級過程之前備份您的數據。

實際上,我的問題似乎有一個錯誤的前提。

也許我的數據沒有失去。

有兩個因素讓我相信它是。

首先,當我跑的時候:

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

我看到比以前小得多的數據庫*(*例如,v5.7 中的 0.5 MB 而不是 v8.0 中的 54.8 MB)。

但是在查看各種表的行數時,它們在 5.7 中似乎與在 8.0 中相同。

其次,我對“mysql”數據庫中的使用者名和密碼與我的一個應用程序的數據庫之一的“使用者”表中的使用者名和密碼有些混淆。

您假設刪除 utf8mb4 字元集和排序規則,並在備份文件中添加相關字元集,然後嘗試恢復。

像 :


:%s/SET character_set_client  = utf8mb4/SET character_set_client  = latin1/
:%s/SET character_set_results = utf8mb4/SET character_set_results = latin1/
:%s/SET collation_connection  = utf8mb4_general_ci/SET collation_connection  = latin1_swedish_ci/

:wq 

我認為你仍然會面臨 mysql 模式恢復的問題,因為它的架構在 MySQL 8.0 中比 MySQL 5.7 發生了變化

引用自:https://dba.stackexchange.com/questions/262072