mysqldumpをしたファイルをインポートしようとしたところ、以下のエラーになりました。
ERROR 1071 Specified key was too long; max key length is 1000 bytes
結果としてはinnodb関連の設定だったのですが、終始試した手順を記録しておきます。
エラー発生から解消まで試した手順
先ず、エクスポート方法が2種類あるので両方試してみました。
- mysqldumpする際に、圧縮ファイルとして出力してもダメ
- mysqldumpする際に、圧縮しないで出力してもダメ
参照コマンド↓
https://normalblog.net/system/mysql/mysql_matome/
MySQLの再起動もしてみました。
# /etc/init.d/mysql restart
これでも解消せず、
ログからエラー内容確認してみました。
# tail -f /var/log/mysqld.log
このログファイルの中に、以下の内容が見つかりました。
InnoDB: Fatal error: cannot allocate the memory for the buffer pool
「innodbのバッファプールにメモリを割り当てられない」といったメッセージでした。
MySQLの設定ファイルmy.cnfの設定でinnodbのpoolサイズを変更しました。
6000Mになっていたので1024Mに減らしてみました。
# vi /etc/my.cnt innodb_buffer_pool_size=1024M
これでMySQLの再起動をしてみました。
# /etc/init.d/mysql restart
これでも解消しません。
再びログからエラー内容確認
# tail -f /var/log/mysqld.log
以下のログが確認されました。
InnoDB: Error: log file ./ib_logfile0 is of different size 0 xxxxxxxxx bytes InnoDB: than specified in the .cnf file 0 yyyyyyyyy bytes!
innodbのログファイルを削除しました
# rm /var/lib/mysql/ib_logfile0 # rm /var/lib/mysql/ib_logfile1
削除は怖いので実際には退避してから。
何度目かの正直でMySQLの再起動をしてみました
# /etc/init.d/mysql restart
これで解消出来てました!
やりたかったインポートも無事行えて終了です。
良かった。ひーはー

