mysql(mariadb)でalter tableすると、変更元ファイルサイズと同程度の空き領域が必要になり、足りないと変更が失敗する。
足りない場合、空き領域の確保が必要だが、そもそもinsert deleteを繰り返してきたテーブルは、ファイルサイズがでかくなっており、
DBそのものをなんとかしないと、という状況に陥りがちだ。
なぜだか、optimize tableも途中で失敗するので、思考停止で、dump, restoreで対処するとよい。
この時、そのままdumpすると、ファイルサイズが巨大になるので、zipする。
mysqldump -R -u user -ppassword dbname | gzip -c > /var/tmp/dump.gz
以下mysqlクライントで実行
drop database dbname
create database dbname
zcat /var/tmp/dump.gz | mysql -u user -ppassword dbname