Cloud SQL へのデータのインポート

このページでは、Cloud SQL インスタンスにデータをインポートする方法について説明します。SQL ダンプファイルまたは CSV ファイルからデータをインポートできます。

データのインポートのベスト プラクティスについては、データのインポートとエクスポートのベスト プラクティスをご覧ください。

インポート オペレーションが完了したら、結果を確認します。

SQL ダンプファイルから Cloud SQL にデータをインポートする

始める前に

  • 必要なロールと権限を構成済みであることを確認してください。
  • SQL ダンプファイルを作成します。以下の手順のうち、状況に該当する手順を使用します。この手順では、ダンプファイルに Cloud SQL との互換性を持たせるためのフラグを設定します。

  • インポート オペレーションでは、テーブル、エントリ、インデックスの削除と再作成など、sqldump ファイルで SQL コマンドを実行しようとします。データベースの作成方法については、データベースを作成するをご覧ください。
  • システム ユーザー(root@localhost など)をトリガー、ビュー、ストアド プロシージャの DEFINER として使用しないでください。Cloud SQL ではこのユーザーにアクセスできません。
  • SQL ダンプファイルに DEFINER 句(ビュー、トリガー、ストアド プロシージャなど)が含まれている場合、これらのステートメントの実行順序によってはインポートが失敗することがあります。Cloud SQL での DEFINER の使用方法と考えられる回避策の詳細をご確認ください。
  • Cloud SQL にインポートできる SQL ダンプファイルの作成については、SQL ダンプファイルの作成をご覧ください。
  • Cloud Storage 内の SQL ダンプファイルからデータをインポートする

    SQL ダンプファイルから Cloud SQL インスタンスにデータをインポートするには:

    Console

    1. Google Cloud Console の [Cloud SQL インスタンス] ページに移動します。

      [Cloud SQL インスタンス] ページに移動

    2. インスタンスを選択して [概要] ページを開きます。
    3. ボタンバーで [インポート] をクリックします。
    4. [データのインポート元となるファイルを選択してください] で、インポートに使用するバケットと SQL ダンプファイルのパスを入力します。または、次のようにしてファイルを参照します。
      1. [参照] をクリックします。
      2. [ロケーション] で、リスト内のバケット名をダブルクリックします。
      3. リストからファイルを選択します。
      4. [選択] をクリックします。

      圧縮ファイル(.gz)または非圧縮ファイル(.sql)ファイルをインポートできます。

    5. [形式] で [SQL] を選択します。
    6. データをインポートするデータベースを選択します。

      これにより Cloud SQL では、インポートに先立って USE DATABASE ステートメントが実行されます。

    7. [インポート] をクリックしてインポートを開始します。

    gcloud

    1. Cloud Storage バケットをまだ作成していない場合は、作成します。

      バケットの作成方法については、ストレージ バケットの作成をご覧ください。

    2. ファイルをバケットにアップロードします。

      ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

    3. インポート先のインスタンスを記述します。
      gcloud sql instances describe [INSTANCE_NAME]
      
    4. serviceAccountEmailAddress フィールドをコピーします。
    5. gsutil iam を使用して、バケットのサービス アカウントに storage.objectAdmin IAM ロールを付与します。
        gsutil iam ch serviceAccount:[SERVICE-ACCOUNT]:objectAdmin \
        gs://[BUCKET-NAME]
        
      IAM 権限の設定については、IAM 権限の使用をご覧ください。
    6. データベースをインポートします。
      gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME] \
                                  --database=[DATABASE_NAME]
      

      import sql コマンドの使用方法については、sql import sql コマンドのリファレンス ページをご覧ください。

      コマンドから「ERROR_RDBMS」のようなエラーが返された場合は、権限を確認してください。このエラーの原因は多くの場合、権限の問題にあります。

    7. 以前に設定した IAM の権限を保持する必要がない場合は、gsutil iam を使用して削除してください。

    REST v1beta4

      SQL ダンプファイルを作成します。以下の手順のうち、状況に該当する手順を使用します。この手順では、ダンプファイルに Cloud SQL との互換性を持たせるためのフラグを設定します。

    1. Cloud Storage バケットをまだ作成していない場合は、作成します。

      バケットの作成方法については、ストレージ バケットの作成をご覧ください。

    2. ファイルをバケットにアップロードします。

      ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

    3. インスタンスにバケットに対する storage.objectAdmin IAM のロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
    4. ダンプファイルをインポートします。

      後述のリクエスト データは、次のように置き換えてから使用します。

      • project-id: プロジェクト ID
      • instance-id: インスタンス ID
      • bucket_name: Cloud Storage バケット名
      • path_to_sql_file: SQL ファイルへのパス
      • database_name: Cloud SQL インスタンス内のデータベースの名前

      HTTP メソッドと URL:

      POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

      JSON 本文のリクエスト:

      {
       "importContext":
         {
            "fileType": "SQL",
            "uri": "gs://bucket_name/path_to_sql_file",
            "database": "database_name"
          }
      }
      
      

      リクエストを送信するには、次のいずれかのオプションを展開します。

      次のような JSON レスポンスが返されます。

      このリクエストのパラメータの完全な一覧については、instances:import ページをご覧ください。
    5. 以前に設定した IAM の権限を保持する必要がない場合は、今すぐ削除してください。
    このタスクのために基盤となる REST API リクエストがどのように作成されるかについては、instances: import ページの API Explorer をご覧ください。

    CSV ファイルから Cloud SQL へのデータのインポート

    始める前に

    • 必要なロールと権限を構成済みであることを確認してください。
    • インポート先のデータベースとテーブルが、Cloud SQL インスタンス上に存在している必要があります。データベースの作成方法については、データベースを作成するをご覧ください。テーブルを作成するには、mysql クライアントの CREATE TABLE SQL ステートメントを使用します。
    • CSV ファイルは、以下の CSV ファイル形式の要件に従う必要があります。

      ファイルがこれらの要件を満たしていない場合は、mysql クライアントで LOAD DATA LOCAL INFILE ステートメントを使用して、ローカル ファイルをデータベースに読み込みます。そのためには、mysql クライアントに対して --local-infile オプションを使用する必要があります。

    • オンプレミスの MySQL サーバーからエクスポートしたデータをインポートする場合:
      1. ストレージ バケットの作成の手順で Cloud Storage にバケットを作成します。
      2. オブジェクトのアップロードの手順で、SQL ダンプファイルを Cloud Storage バケットにアップロードします。

    CSV ファイル形式の要件

    CSV ファイルは、データの行ごとに 1 行を使用し、カンマ区切りのフィールドを持つ必要があります。 Cloud SQL が受け入れる CSV ファイルの形式は、次の MySQL ステートメントを使用する場合と同じです: LOAD DATA INFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"'. この形式で CSV を作成するには、既存のデータベースからデータをエクスポートするときに、Cloud SQL でインポートに使用するものと同じオプションまたは区切り文字をエクスポートで使用するようにしてください。例については、[Creating a CSV file](/sql/docs/mysql/import-export/exporting#csv){: target="_blank"} をご覧ください。

    Cloud Storage にある CSV ファイルからデータをインポートする

    CSV ファイルを使用して Cloud SQL インスタンスにデータをインポートする手順は次のとおりです。

    Console

    1. Google Cloud Console の [Cloud SQL インスタンス] ページに移動します。

      [Cloud SQL インスタンス] ページに移動

    2. インスタンスを選択して [概要] ページを開きます。
    3. ボタンバーで [インポート] をクリックします。
    4. [データのインポート元となるファイルを選択してください] で、インポートに使用するバケットと CSV ファイルのパスを入力します。または、次のようにしてファイルを参照します。
      1. [参照] をクリックします。
      2. [ロケーション] で、リスト内のバケット名をダブルクリックします。
      3. リストからファイルを選択します。
      4. [選択] をクリックします。

      圧縮ファイル(.gz)または非圧縮ファイル(.csv)ファイルをインポートできます。

    5. [形式] で [CSV] を選択します。
    6. CSV ファイルをインポートする Cloud SQL インスタンスの [データベース] と [テーブル] を指定します。
    7. オプションで、インポートを行うユーザーを指定できます。
    8. [インポート] をクリックしてインポートを開始します。

    gcloud

    1. Cloud Storage バケットをまだ作成していない場合は、作成します。

      バケットの作成方法については、ストレージ バケットの作成をご覧ください。

    2. ファイルをバケットにアップロードします。

      ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

    3. CSV ファイルからバケットにデータをアップロードします。
    4. エクスポート元のインスタンスを記述します。
      gcloud sql instances describe [INSTANCE_NAME]
      
    5. serviceAccountEmailAddress フィールドをコピーします。
    6. gsutil iam を使用して、バケットのサービス アカウントに storage.objectAdmin IAM ロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
    7. ファイルをインポートします。
      gcloud sql import csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                  --database=[DATABASE_NAME] --table=[TABLE_NAME]
      

      import csv コマンドの使用方法については、sql import csv コマンドのリファレンス ページをご覧ください。

    8. 以前に設定した IAM の権限を保持する必要がない場合は、gsutil iam を使用して削除してください。

    REST v1beta4

    1. Cloud Storage バケットをまだ作成していない場合は、作成します。

      バケットの作成方法については、ストレージ バケットの作成をご覧ください。

    2. ファイルをバケットにアップロードします。

      ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

    3. インスタンスにバケットに対する storage.objectAdmin IAM ロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
    4. ファイルをインポートします。

      後述のリクエストのデータを使用する前に、次のように置き換えます。

      • project-id: プロジェクト ID
      • instance-id: インスタンス ID
      • bucket_name: Cloud Storage バケット名
      • path_to_csv_file: CSV ファイルへのパス
      • database_name: Cloud SQL インスタンス内のデータベースの名前
      • table_name: データベース テーブルの名前

      HTTP メソッドと URL:

      POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

      JSON 本文のリクエスト:

      {
       "importContext":
         {
            "fileType": "CSV",
            "uri": "gs://bucket_name/path_to_csv_file",
            "database": "database_name",
            "csvImportOptions":
             {
               "table": "table_name"
             }
         }
      }
      
      

      リクエストを送信するには、次のいずれかのオプションを展開します。

      次のような JSON レスポンスが返されます。

      このリクエストのパラメータの完全な一覧については、instances:import ページをご覧ください。
    5. 以前に設定した IAM 権限を保持する必要がない場合は、権限を削除します。

    ERROR_RDBMS のようなエラーが発生した場合、テーブルが存在することを確認してください。存在している場合は、バケットに対して正しい権限があることを確認します。Cloud Storage のアクセス制御の構成について詳しくは、アクセス制御リストの作成と管理をご覧ください。

    このタスクのために基盤となる REST API リクエストがどのように作成されるかについては、instances: import ページの API Explorer をご覧ください。

    必要なロールと権限

    この手順では、Cloud Storage からファイルをインポートする必要があります。Cloud Storage からデータをインポートするには、Cloud SQL インスタンスのサービス アカウントまたはユーザーに Cloud SQL 管理者のロールか、cloudsql.instances.import 権限を含むカスタムロールと roles/storage.LegacyObjectReader IAM ロール(storage.objects.get 権限を含む)が必要です。

    アカウントまたはユーザーがエクスポート オペレーションも実行する場合は、ストレージ オブジェクト管理者(storage.objectAdmin)IAM ロールセットを付与します。IAM ロールについては、Cloud Storage の Cloud Identity and Access Management をご覧ください。

    インスタンスのサービス アカウント名は、Google Cloud Console のインスタンスの [概要] ページで確認できます。Cloud Storage バケットのロールは、gsutil ツールを使用して確認できます。

    gsutil iam get gs://[BUCKET_NAME]

    バケットでの IAM 使用について詳しくは、こちらをご覧ください。

    トラブルシューティング

    表内のリンクをクリックすると、詳細が表示されます。

    この問題については... 次のような問題が考えられます... 次のことを試します...
    オペレーションのステータスを確認できない。 ユーザー インターフェースには成功または失敗のみが表示されます。 詳細については、これらのデータベース コマンドをご覧ください。
    エクスポート中の 408 Error (Timeout) データベースのサイズとエクスポート コンテンツによっては、SQL のエクスポートに時間がかかることがあります。 複数の CSV エクスポートを使用して各オペレーションのサイズを減らします
    CSV のエクスポートは機能したが、SQL エクスポートに失敗した。 SQL のエクスポートでは、Cloud SQL との互換性の問題が発生する可能性が高くなります。 CSV のエクスポートを使用して必要なものだけをエクスポートします
    エクスポートに時間がかかりすぎる。 Cloud SQL では同時実行オペレーションの同期がサポートされません。 エクスポートのオフロードを使用します。詳細については、こちらをご覧ください。
    インポートに時間がかかりすぎる。 アクティブな接続が多すぎると、インポート オペレーションが妨げられる可能性があります。 未使用の接続を閉じるか、インポート オペレーションを開始する前に Cloud SQL インスタンスを再起動してください。
    Error 1412: Table definition has changed です。 エクスポート中にテーブルが変更されました。 ダンプ オペレーションからテーブル変更ステートメントを削除します
    インポートに失敗した。 エクスポートされたファイルに、まだ存在しないデータベース ユーザーが含まれている可能性があります。 インポートを再試行する前に、失敗したデータベースをクリーンアップします。インポートを行う前に、データベース ユーザーを作成します。
    エクスポート オペレーション中に接続が切断した。 クエリで最初の 7 分以内にデータを生成する必要があります。 クエリを手動でテストします。詳細については、こちらをご覧ください。
    エクスポート中に不明なエラーが発生した。 帯域幅の問題である可能性があります。 インスタンスと Cloud Storage バケットの両方が同じリージョンに存在することを確認します
    エクスポートを自動化する場合。 Cloud SQL には、エクスポートを自動化する方法がありません。 この機能を実行する独自のパイプラインを構築します。詳細については、こちらをご覧ください。
    ERROR_RDBMS: system error occurred Cloud Storage の権限またはテーブルが存在しません。 権限を確認するか、テーブルが存在することを確認します
    インポート中のエラー: テーブルが存在しません。 現時点では、必要なテーブルが存在しません。 インポート開始時に FOREIGN_KEY_CHECKS を無効にします
    エラー メッセージ: Access denied; you need (at least one of) the SUPER privilege(s) for this operation super user@localhost(root@localhost など)を使用するダンプファイルには、イベント、ビュー、関数、またはプロシージャが含まれる場合があります。これは Cloud SQL ではサポートされていません。 Cloud SQL での DEFINER の使用方法と考えられる回避策の詳細をご確認ください。
    エラー メッセージ: ERROR 1045 (28000) at line {line_number}: Access denied for user 'cloudsqlimport'@'localhost' ダンプファイルに、データベースに存在しない DEFINER があります。 Cloud SQL での DEFINER の使用方法と考えられる回避策の詳細をご覧ください。
    エラー メッセージ: Unknown table 'COLUMN_STATISTICS' in information_schema これは、MySQL 8.0 の mysqldump バイナリを使用して MySQL 5.7 データベースからデータをダンプし、それを MySQL 8.0 データベースにインポートする場合に発生します。 MySQL 5.7 データベースからデータをダンプし、MySQL 8.0 データベースにインポートする場合は、必ず MySQL 5.7 の mysqldump バイナリを使用してください。MySQL 8.0 の mysqldump バイナリを使用する場合は、--column-statistics=0 フラグを追加する必要があります。

    オペレーションのステータスを確認できない

    進行中のオペレーションのステータスが表示されません。

    次のような問題が考えられます

    Google Cloud Console では、完了時に成功または失敗のみが表示され、警告は返されません。

    次の方法をお試しください

    データベースに接続し、SHOW WARNINGS を実行します。


    エクスポート中の 408 エラー(タイムアウト)

    Cloud SQL でエクスポート ジョブを実行しているときに、エラー メッセージ 408 Error (Timeout) が表示されます。

    次のような問題が考えられます

    CSV 形式と SQL 形式ではエクスポート方法が異なります。SQL 形式ではデータベース全体がエクスポートされるため、完了までに時間がかかります。CSV 形式ではエクスポートに含めるデータベースの要素を定義できます。

    次の方法をお試しください

    CSV 形式を使用して複数の小規模なエクスポート ジョブを実行し、各オペレーションのサイズと長さを減らします。


    CSV のエクスポートは機能したが、SQL エクスポートに失敗した

    CSV のエクスポートは機能したが、SQL エクスポートに失敗した。

    次のような問題が考えられます

    CSV 形式と SQL 形式ではエクスポート方法が異なります。SQL 形式ではデータベース全体がエクスポートされるため、完了までに時間がかかります。CSV 形式ではエクスポートに含めるデータベースの要素を定義できます。

    次の方法をお試しください

    CSV エクスポートを使用して必要なものだけをエクスポートします。


    エクスポートに時間がかかりすぎる

    エクスポートに時間がかかりすぎるため、他のオペレーションをブロックします。

    次のような問題が考えられます

    Cloud SQL では同時実行オペレーションの同期がサポートされません。

    次の方法をお試しください

    サイズの小さい多数のデータセットを一度にエクスポートしてみてください。


    インポートに時間がかかりすぎる

    インポートに時間がかかりすぎるため、他のオペレーションをブロックしています。

    次のような問題が考えられます

    アクティブな接続が多すぎると、インポート オペレーションが妨げられる可能性があります。CPU とメモリが接続のために消費されると、使用可能なリソースが制限されます。

    次の方法をお試しください

    未使用のオペレーションを終了します。使用可能なリソースが十分にあるかどうか、CPU とメモリ使用量を確認します。インポート オペレーションに使用するリソースを最大限確保するために、オペレーションを開始する前にインスタンスを再起動することをおすすめします。再起動:

    • すべての接続を終了します。
    • リソースを消費している可能性のあるタスクを終了します。


    mysqldump: エラー 1412: テーブル定義が変更されました

    エラー メッセージ mysqldump: Error 1412: Table definition has changed, retry transaction when dumping the table が表示されます。

    次のような問題が考えられます

    エクスポート処理中にテーブル内で変更がありました。

    次の方法をお試しください

    エクスポート オペレーション中に次のステートメントを使用すると、ダンプ トランザクションが失敗する可能性があります。

    • ALTER TABLE
    • CREATE TABLE
    • DROP TABLE
    • RENAME TABLE
    • TRUNCATE TABLE
    これらのステートメントのいずれかをダンプ オペレーションから削除します。


    インポートに失敗した

    エクスポートされた SQL ダンプファイルで参照されているユーザーが存在しない場合、インポートは失敗します。

    次のような問題が考えられます

    SQL ダンプをインポートする前に、オブジェクトを所有しているか、またはダンプされたデータベース内のオブジェクトに対する権限が付与されているデータベース ユーザーが存在する必要があります。 そうでない場合、復元で、元の所有権や権限でのオブジェクトの再作成に失敗します。

    次の方法をお試しください

    インポートを再試行する前に、失敗したデータベースをクリーンアップします。SQL ダンプをインポートする前に、データベース ユーザーを作成します。


    エクスポート オペレーション中に接続が切断された

    エクスポート オペレーション中に接続が切断しました。

    次のような問題が考えられます

    エクスポートが開始されてから最初の 7 分以内に、エクスポートで実行されているクエリでデータが生成されないため、Cloud Storage への接続がタイムアウトする可能性があります。

    次の方法をお試しください

    次のコマンドを使用して任意のクライアントから接続し、クエリの出力を標準出力に送信して、クエリを手動でテストします。

    COPY (INSERT_YOUR_QUERY_HERE) TO STDOUT WITH ( FORMAT csv, DELIMITER ',', ENCODING 'UTF8', QUOTE '"', ESCAPE '"' )

    これは、エクスポートが開始されるとすぐにクライアントからデータの送信が開始されるためです。データが送信されていない接続を維持すると、最終的に接続が切断されてエクスポートが失敗し、操作が不確定な状態になります。また、gcloud からのエラー メッセージは次のように表示されます。

    operation is taking longer than expected


    エクスポート中に不明なエラーが発生した

    データベースを Cloud Storage バケットにエクスポートしようとすると、エラー メッセージ Unknown error が表示されます。

    次のような問題が考えられます

    帯域幅の問題が原因で転送が失敗する可能性があります。

    次の方法をお試しください

    Cloud SQL インスタンスが Cloud Storage バケットとは異なるリージョンに存在している可能性があります。ある大陸から別の大陸へのデータの読み取りと書き込みではネットワークの使用量が多く、このような断続的な問題を引き起こす可能性があります。インスタンスとバケットのリージョンを確認します。


    エクスポートを自動化する

    エクスポートを自動化する場合。

    次のような問題が考えられます

    Cloud SQL には、エクスポートを自動化する方法がありません。

    次の方法をお試しください

    Google Cloud プロダクト(Cloud Scheduler、Pub/Sub、Cloud Functions)を使用して、独自の自動エクスポート システムを構築できます。


    ERROR_RDBMS システムエラーが発生した

    エラー メッセージ [ERROR_RDBMS] system error occurred が表示されます。

    次のような問題が考えられます

    • ユーザーが必要なすべての Cloud Storage 権限を持っていない可能性があります。
    • データベース テーブルが存在しない可能性があります。

    次の方法をお試しください

    1. バケットに対して少なくとも WRITER 権限があり、エクスポート ファイルに対して READER 権限があることを確認してください。Cloud Storage のアクセス制御の構成について詳しくは、アクセス制御リストの作成と管理をご覧ください。
    2. テーブルが存在していることを確認します。存在している場合は、バケットに対して正しい権限があることを確認します。

    インポート中のエラー: テーブルが存在しません

    インポート オペレーションが失敗し、テーブルが存在しないというエラーが表示されます。

    次のような問題が考えられます

    テーブルには他のテーブルとの外部キーの依存関係がある場合があり、オペレーションの順序によっては、インポート オペレーション中に 1 つ以上のテーブルがまだ存在しない可能性があります。

    次の方法をお試しください

    次の行をダンプファイルの先頭に追加します。

      SET FOREIGN_KEY_CHECKS=0;
    

    また、次の行をダンプファイルの末尾に追加します。

      SET FOREIGN_KEY_CHECKS=1;
    

    これらの設定により、インポート オペレーション中のデータの整合性チェックが無効になり、データの読み込み後に再び有効になります。ダンプファイルの作成時にデータがすでに検証されているため、この設定はデータベース上のデータの整合性には影響しません。


    アクセスが拒否された(この操作を行うには、SUPER の権限の少なくとも 1 つが必要)

    Access denied; you need (at least one of) the SUPER privilege(s) for this operation というエラーが表示されます。

    次のような問題が考えられます

    super user@localhost(root@localhost など)を使用するダンプファイルには、イベント、ビュー、関数、またはプロシージャが含まれる場合があります。これは Cloud SQL ではサポートされていません。

    次の方法をお試しください

    DEFINER 句を使用したデータベースのインポートについては、こちらのドキュメントをご覧ください。


    エラー メッセージ: ERROR 1045 (28000) at line {line_number}: Access denied for user 'cloudsqlimport'@'localhost'

    ERROR 1045 (28000) at line {line_number}: Access denied for user 'cloudsqlimport'@'localhost' というエラーが表示されます。

    次のような問題が考えられます

    根本的な原因は、ダンプファイルに DEFINER 句のあるユーザーがあり、そのユーザーがデータベースに存在しないことと、そのユーザーがデータベースのオブジェクト定義で相互参照されていることです。

    次の方法をお試しください

    ダンプファイルで DEFINER 句を使用してデータベースをインポートする方法については、こちらのドキュメントをご覧ください。データベースに 1 人以上のユーザーを作成する必要があります。


    エラー メッセージ: Unknown table 'COLUMN_STATISTICS' in information_schema

    エラー メッセージ Unknown table 'COLUMN_STATISTICS' in information_schema が表示されます。

    次のような問題が考えられます

    これは、MySQL 8.0 の mysqldump バイナリを使用して MySQL 5.7 データベースからデータをダンプし、それを MySQL 8.0 データベースにインポートする場合に発生します。

    次の方法をお試しください

    MySQL 5.7 データベースからデータをダンプし、MySQL 8.0 データベースにインポートする場合は、必ず MySQL 5.7 の mysqldump バイナリを使用してください。MySQL 8.0 の mysqldump バイナリを使用する場合は、--column-statistics=0 フラグを追加する必要があります。


    次のステップ