從 MySQL 8 導出時如何將 mysqldump .sql 文件導入 MySQL 5.7
我不小心安裝了 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_ci
和utf8_unicode_ci
utf8mb4
和utf8
utf8_unicode_520_ci
和utf8_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 發生了變化