4

Amazon MySQL RDS インスタンスを、MySQL を実行している自分のサーバーにエクスポートしたいと考えています。データベースのダンプに成功し、新しいデータベースでユーザーを再作成しましたが、ダンプファイルをインポートすると、次のようになります。

ERROR 1071 (42000) at line 25: Specified key was too long; max key length is 767 bytes

一部のグーグルは、InnoDB の最大キー サイズが 767 であることを明らかにしました。RDS で次のオプションを使用していたことが判明しました。

innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=true
log_bin_trust_function_creators=1

これらのオプションを my.cnf に追加しましたが、同じエラー メッセージが表示されました。次に、innodb_large_prefix は ROW_TYPE=DYNAMIC のテーブルでのみ機能することを読みました。RDS で動的行を使用していたことが判明しましたが、これらの行はダンプファイルで DYNAMIC として作成されていませんでした。次に、ダンプファイルに ROW_TYPE=DYNAMIC オプションを追加したこの StackOverflow の投稿を見つけました: Force row_format on mysqldump

それでも、同じエラーメッセージが表示されます。アイデア?

4

1 に答える 1

1

これはエンコードの問題だと思います。latin1 が RDS で使用されていて、環境で UTF-8 が使用されている場合、インデックス付きの VARCHAR(256) が問題です。

UTF-8 では VARCHAR( 256) が内部的に VARCHAR( 768 ) になるためです。

于 2014-02-11T19:37:22.060 に答える