1. 程式人生 > >1033 incorrect information in file: './lxbd_db_00/t_longxibendi_info_00_1.frm'

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  的配置目錄。