1033 incorrect information in file: './lxbd_db_00/t_longxibendi_info_00_1.frm'
一.問題描述
1.今天qa反映個問題。
mysqldump匯入資料報錯。
2.初步判斷:
1.)磁碟損壞、檔案系統損壞。
2.)表損壞。
3.)主從資料庫版本不一致。
4.)配置有問題。
3.登入資料庫,發現,該表是innodb表。
那麼,用reapir,check 等,檢查和修復是無濟於事的。
mysql> check table lxbd_db_00.t_longxibendi_info_00_1;
+----------------------------+-------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------------------------+-------+----------+-------------------------------------------------------------------+
| lxbd_db_00.t_longxibendi_info_00_1 | check | Error | Incorrect information in file: './lxbd_db_00/t_longxibendi_info_00_1.frm' |
| lxbd_db_00.t_longxibendi_info_00_1 | check | error | Corrupt |
+----------------------------+-------+----------+-------------------------------------------------------------------+
二.問題定位
後來讓qa開啟錯誤日誌。
發現報以下錯誤
libexec/mysqld: Can't create/write to file '/tmp/ibx3NNtE' (Errcode: 28)
120104 13:01:10 InnoDB: Error: unable to create temporary file; errno: 28
這樣基本原因知道了,
mysql> show variables like '%tmp%';
+-------------------+----------+
| Variable_name | Value |
+-------------------+----------+
| max_tmp_tables | 32 |
| slave_load_tmpdir | /tmp/ |
| tmp_table_size | 33554432 |
| tmpdir | /tmp/ |
+-------------------+----------+
三.問題解決
qa沒有配置tmpdir,但是mysql預設使用/tmp作為 tmpdir的目錄。
但是/tmp 掛載到 /root
$ df -h /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 8.7G 7.2G 1.5G 83% /
大量mysqldump匯入資料,導致tmp空間不夠用。故而報錯。
讓qa重新配置tmp,這樣啟動mysql。問題解決。
四.總結
如果連innodb 的表 執行 check table 也報錯,特別是標題中的錯誤。那麼
注意檢視tmpdir 的配置目錄。