web-dev-qa-db-ja.com

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_ciutf8_unicode_ci
  • utf8mb4utf8
  • utf8_unicode_520_ciutf8_unicode_ci

次に、 'mysql'データベース に関連する.sqlファイルのセクションも削除しました。

次にコマンドmysql < alldb.sqlはエラーなしで実行されますが、データを見ると、多くのデータが欠落しています。

追伸私は誰かが私を助けることができると楽観的に感じますが、それは MySQL 8 docs と言うことを少し心配しています:

MySQL 8.0からMySQL 5.7へのダウングレード、またはMySQL 8.0リリースから以前のMySQL 8.0リリースへのダウングレードはサポートされていません。サポートされている唯一の代替方法は、アップグレード前に取得したバックアップを復元することです。したがって、アップグレードプロセスを開始する前にデータをバックアップすることが不可欠です。

2
Ryan

実際、私の質問は誤った前提を持っているようでした。

多分私のデータは欠けていなかったが欠けていました。

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」テーブルのユーザー名とパスワードについて、いくつか混乱がありました。

0
Ryan

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スキーマの復元でまだ問題が発生すると思います。

0
JYOTI RAJAI