新規テーブルを作成時に「Percona-XtraDB, Supports transactions, row-level locking, and foreign keys」でテーブルが作成できない
MySQLのログに下記のエラーが出て、リペアテーブルを実行しました。
231226 3:10:05 [ERROR] mysqld: Table './testdb/test1' is marked as crashed and should be repaired
テーブルが壊れているようなのでリペアテーブルを実施しましたが、修復はできませんでした
MariaDB [testdb]> REPAIR TABLE test1; +-----------------------------+--------+----------+----------------------------+ | Table | Op | Msg_type | Msg_text | +-----------------------------+--------+----------+----------------------------+ | testdb.test1 | repair | Error | Table 'testdb.test1' doesn't exist | | testdb.test1 | repair | status | Operation failed | +-----------------------------+--------+----------+----------------------------+
利用頻度の低いテーブルだったので、一度削除してバックアップしていたテーブルより新規作成する事にしました。
まずは、修復できなかったテーブルを削除します
MariaDB [testdb]> DROP TABLE IF EXISTS testdb.test1;
コピーしてリネームしたテーブルがあったので、phpmyadminからコピーを作成すると、下記のエラーで新規テーブルが作成できません
Percona-XtraDB, Supports transactions, row-level locking, and foreign keys
「DROP TABLE」を実行しても、削除したファイルが残っている可能性があるので、該当テーブルのあるディレクトリを確認します
$ sudo ls -l /var/lib/mysql/testdb/ | grep test1 -rw-rw---- 1 mysql mysql 9428 Dec 26 11:47 test1_20231226.frm -rw-rw---- 1 mysql mysql 442368 Dec 26 11:47 test1_20231226.ibd -rw-rw---- 1 mysql mysql 65536 Dec 25 17:20 test1.ibd
「DROP TABLE」を実行したテーブルのファイルが残っていたのでリネームします
$ sudo mv /var/lib/mysql/testdb/test1.ibd /var/lib/mysql/testdb/test1_ibd.bak
phpmyadminからコピーを作成してもエラーなく新規にテーブル作成できました
ディスカッション
コメント一覧
まだ、コメントがありません