新規テーブルを作成時に「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からコピーを作成してもエラーなく新規にテーブル作成できました

 

スポンサーリンク

0
0