Kaputte MyISAM-Tabelle, unreparierbar ...
am 30.08.2007 10:43:35 von Sven PaulusIch habe hier eine kleine MyISAM-Tabelle, welche nach dem Update auf MySQL
5.1.19 einfach nur kaputt und nicht zugreifbar ist. Komischerweise laesst
sie sich auch auf keine mir bekannte Weise reparieren.
Mir kommt's nicht auf die Daten an - die habe ich noch im Backup -, ich
moechte einfach nur verstehen, was hier gerade schieflaeuft.
Primaeres Verhalten von MySQL ist dieses:
| mysql> desc addrs;
| ERROR 1034 (HY000): Incorrect key file for table 'addrs'; try to repair it
Aber im Einzelnen:
| # /etc/init.d/mysql stop
| Stopping MySQL database server: mysqld.
|
| # myisamchk --version
| myisamchk Ver 2.7 for pc-linux-gnu at i486
|
| # myisamchk --check -v addrs
| Checking MyISAM file: addrs
| Data records: 230 Deleted blocks: 0
| - check file-size
| - check record delete-chain
| No recordlinks
| - check key delete-chain
| block_size 1024:
| - check index reference
| - check data record references index: 1
| - check data record references index: 2
| - check record links
|
| # myisamchk --description -v addrs
|
| MyISAM file: addrs
| Record format: Packed
| Character set: latin1_swedish_ci (8)
| File-version: 1
| Creation time: 2001-01-06 16:51:32
| Recover time: 2007-08-30 8:03:37
| Status: checked,optimized keys
| Data records: 230 Deleted blocks: 0
| Datafile parts: 230 Deleted data: 0
| Datafile pointer (bytes): 4 Keyfile pointer (bytes): 4
| Datafile length: 21728 Keyfile length: 7168
| Max datafile length: 4294967294 Max keyfile length: 4398046510079
| Recordlength: 142
|
| table description:
| Key Start Len Index Type Rec/key Root Blocksize
| 1 7 4 multip. unsigned long 0 3072 1024
| 2 3 4 multip. unsigned long 0 6144 1024
|
| # myisamchk -r -v addrs
| - recovering (with sort) MyISAM-table 'addrs'
| Data records: 230
| - Fixing index 1
| - Searching for keys, allocating buffer for 1088 keys
| - Dumping 230 keys
| - Fixing index 2
| - Searching for keys, allocating buffer for 231 keys
| - Dumping 230 keys
|
| # ls -l addrs.*
| -rw-rw---- 1 mysql mysql 21728 Aug 30 10:07 addrs.MYD
| -rw-rw---- 1 mysql mysql 7168 Aug 30 10:07 addrs.MYI
| -rw-rw---- 1 mysql mysql 8922 Jan 6 2001 addrs.frm
|
| # /etc/init.d/mysql start
| Starting MySQL database server: mysqld.
| Checking for corrupt, not cleanly closed and upgrade needing tables..
|
| # mysql abi91
| Reading table information for completion of table and column names
| You can turn off this feature to get a quicker startup with -A
|
| Welcome to the MySQL monitor. Commands end with ; or \g.
| Your MySQL connection id is 7
| Server version: 5.1.19-beta-Debian_1-log Debian etch distribution
|
| Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
|
| mysql> desc addrs;
| ERROR 1034 (HY000): Incorrect key file for table 'addrs'; try to repair it
| mysql> repair table addrs \G
| *************************** 1. row ***************************
| Table: abi91.addrs
| Op: repair
| Msg_type: error
| Msg_text: Incorrect key file for table 'addrs'; try to repair it
| 1 row in set, 1 warning (0.00 sec)
|
| mysql> show table status like 'addrs' \G
| *************************** 1. row ***************************
| Name: addrs
| Engine: NULL
| Version: NULL
| Row_format: NULL
| Rows: NULL
| Avg_row_length: NULL
| Data_length: NULL
| Max_data_length: NULL
| Index_length: NULL
| Data_free: NULL
| Auto_increment: NULL
| Create_time: NULL
| Update_time: NULL
| Check_time: NULL
| Collation: NULL
| Checksum: NULL
| Create_options: NULL
| Comment: Incorrect key file for table 'addrs'; try to repair it
| 1 row in set (0.00 sec)
Es kann durchaus sein, dass die Tabelle schon zu 3.23-Tagen angelegt wurde,
kann ich leider nicht mehr nachvollziehen. Nur verwundert mich eben, dass
myisamchk (gehoert definitiv zur 5.1.19er Release, ist keine aeltere
Version) die Tabelle als einwandfrei ansieht, der mysqld aber nicht.
mysqlcheck hilft entsprechend auch nicht weiter (bei -r wieder das
"Incorrect key file ...").
Mich wuerde halt nur interessieren, was hier los sein koennte, fuer den Fall,
mal auf einem "richtigen" System auf sowas zu stossen ... Entsprechend waere
ich fuer Tips dankbar (und wenn es auch nur ein Verweis auf eine Bug-Nummer
oder ein "geht nicht" ist).