MySQLでクラッシュしたテーブルをチェックする方法
MySQLにおいて、テーブルが「クラッシュ(破損)」している状態とは、そのテーブルのストレージエンジン情報がNULLまたは空になっている状態を指します。データベース内のどのテーブルがクラッシュしているのかを確認したい場合は、SHOW TABLE STATUS コマンドを使用します。
クラッシュしたテーブルを確認する基本構文
以下の構文を使うことで、指定したデータベース内のすべてのテーブルの状態を一覧表示できます。
SHOW TABLE STATUS FROM yourDatabaseName;
実行例:test3データベースの場合
ここでは、複数のテーブルを持つ「test3」というデータベースに対して、実際にこの構文を実行してみましょう。
mysql> show table status from test3;
実行すると、次のような出力結果が得られます。
+------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+ | bestdateformatdemo | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | 5 | 2019-02-22 22:49:43 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | countdemo | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | 4 | 2019-02-26 15:21:12 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | deletedemo | InnoDB | 10 | Dynamic | 6 | 2730 | 16384 | 0 | 0 | 0 | NULL | 2019-02-13 19:20:04 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | differentdatetime | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | 5 | 2019-02-14 10:26:28 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | expandedoutputdemo | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | 5 | 2019-02-22 22:43:59 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | fieldlessthan5chars | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 0 | 0 | 8 | 2019-02-13 19:03:05 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | lastrecordbeforelastone | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 0 | 0 | 10 | 2019-02-14 17:31:59 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | mostrecentdatedemo | InnoDB | 10 | Dynamic | 6 | 2730 | 16384 | 0 | 0 | 0 | 6 | 2019-02-14 17:15:53 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | nullcasedemo | InnoDB | 10 | Dynamic | 6 | 2730 | 16384 | 0 | 0 | 0 | NULL | 2019-02-14 17:55:39 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | order | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 0 | 0 | NULL | 2019-02-14 14:23:38 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | orderbydatethentimedemo | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | 5 | 2019-02-14 18:05:36 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | posts | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 32768 | 0 | NULL | 2019-02-13 18:19:06 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | productdemo | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | NULL | 2019-02-13 20:06:36 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | radiansdemo | InnoDB | 10 | Dynamic | 2 | 8192 | 16384 | 0 | 0 | 0 | 3 | 2019-02-14 14:33:24 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | selecttextafterlastslashdemo | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | 5 | 2019-02-22 23:07:32 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | siglequotesdemo | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 0 | NULL | 2019-02-14 10:41:23 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | storeddemo | InnoDB | 10 | Dynamic | 6 | 2730 | 16384 | 0 | 0 | 0 | 6 | 2019-02-26 15:53:57 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | studentinformation | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 0 | NULL | 2019-02-14 17:06:07 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | | updatestringdemo | InnoDB | 10 | Dynamic | 2 | 8192 | 16384 | 0 | 0 | 0 | 3 | 2019-02-13 18:25:59 | NULL | NULL | utf8mb4_0900_ai_ci | NULL | | | +------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+ 19 rows in set (0.71 sec)
出力結果の見方
出力結果には、テーブル名(Name)、ストレージエンジン(Engine)、行数(Rows)、作成日時(Create_time)など、各テーブルに関する詳細な情報が表示されます。この中で注目すべきは Engine カラムです。通常は「InnoDB」や「MyISAM」などのエンジン名が表示されますが、ここが NULL または空欄になっているテーブルがあれば、そのテーブルはクラッシュしている可能性があります。
補足:CHECK TABLEコマンドでテーブルの整合性を検証する
特定のテーブルの状態をより詳しく調べたい場合は、CHECK TABLE コマンドも活用できます。
mysql> CHECK TABLE テーブル名;
このコマンドを実行すると、テーブルの整合性が検証され、問題がなければ「OK」、破損が検出されればエラーメッセージが返されます。破損が見つかった場合は、REPAIR TABLE コマンドで修復を試みることができます(MyISAMテーブルの場合)。
定期的にテーブルの状態をチェックすることで、データ損失やサービス障害を未然に防ぐことができます。特にサーバーの異常終了やディスク障害が発生した後は、必ずテーブルの状態を確認することをおすすめします。
-
MySQLでNULL値を1として表示・更新する方法
MySQLでは、テーブル内のNULL値を別の値(たとえば「1」)に置き換えて扱いたい場面があります。この記事では、IFNULL関数とUPDATE文を組み合わせて、NULL値を1に変換する具体的な手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec) 2. レコードを挿入する INSERT文を使って、NULLを含む複数のレコードを
-
MySQLでテーブルの単一行にNULL値が含まれているか確認する方法
MySQLでテーブルの行内にNULL値が含まれているかどうかを確認するには、「IS NULL」演算子を使用します。WHERE句と組み合わせることで、特定のカラムがNULLである行を簡単に抽出できます。ここでは、実際にテーブルを作成し、NULL値を含む行を検索する手順を順番に見ていきましょう。 サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 例 mysql> create table demo86 -> ( -> value1 varchar(20) -> , -> value2 varchar(20)