誤って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
次に、 'mysql'データベース に関連する.sqlファイルのセクションも削除しました。
次にコマンドmysql < alldb.sql
はエラーなしで実行されますが、データを見ると、多くのデータが欠落しています。
追伸私は誰かが私を助けることができると楽観的に感じますが、それは MySQL 8 docs と言うことを少し心配しています:
MySQL 8.0からMySQL 5.7へのダウングレード、またはMySQL 8.0リリースから以前のMySQL 8.0リリースへのダウングレードはサポートされていません。サポートされている唯一の代替方法は、アップグレード前に取得したバックアップを復元することです。したがって、アップグレードプロセスを開始する前にデータをバックアップすることが不可欠です。
実際、私の質問は誤った前提を持っているようでした。
多分私のデータは欠けていなかったが欠けていました。
2つの要因が私にそれがそうであると信じさせました。
まず、私が走ったとき:
SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)"
FROM information_schema.TABLES
GROUP BY table_schema;
以前よりもずっと小さいデータベースを見ました(たとえば、v8.0では54.8 MBではなく、v5.7では0.5 MB)。
しかし、さまざまなテーブルの 行カウント を見ると、5.7でも8.0と同じであるように見えます。
次に、「mysql」データベースと、自分のアプリの1つのデータベースの「users」テーブルのユーザー名とパスワードについて、いくつか混乱がありました。
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 5.7ではなくMySQL 8.0で変更されているため、mysqlスキーマの復元でまだ問題が発生すると思います。