サーバー1にmysqldbをダンプします
$ mysql --version
mysql Ver 14.14 Distrib 5.1.54, for debian-linux-gnu (x86_64) using readline 6.2
$ mysqldump -u root -p db > db.sql
サーバー2にインポート
$ mysql --version
mysql Ver 14.12 Distrib 5.0.95, for unknown-linux-gnu (x86_64) using readline 5.1
$ mysql -u root -p db < db.sql
ERROR 1071 (42000) at line 807: Specified key was too long; max key length is 1000 bytes
このエラーについては多くの質問と回答があることは知っていますが、それでも私は戸惑います。
バージョンの問題でしょうか?いいえと思います。
--forceオプションを指定して実行すると、さらに複雑になります。
ERROR 1071 (42000) at line 807: Specified key was too long; max key length is 1000 bytes
ERROR 1146 (42S02) at line 847: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 848: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 849: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 850: Table 'db.users' doesn't exist
何が起こっている?
これを解決することとは別に、どの設定が単純なダンプインポート動作に影響するのか、そしてなぜそれらの設定がダンプファイルで明示されておらず、インポートに設定できないのかを理解したいと思います。
私は実際のエラーをデバッグする必要がないことを好みます。これは高レベルで解決可能でなければなりません。
更新:フレデリックが私に正しい方向を示したときの解決策。基本的に私のダンプはINNODBエンジンでdbを設定しようとしていましたが、サーバー2のmysqlは/etc/my.cnfにありました
[mysqld]
skip-innodb
このオプションを削除してmysqldを再起動するだけで、私のインポートは問題なく実行されました。使用できないエンジンのような単純なものは、myISAMに黙ってフォールバックすることによって引き起こされるキーの長さの問題ではなく、警告やエラーに値しないのは非常に悲しいことです。うーん。では、posgresqlに切り替える時間ですか?モンゴ?:)