14.22 InnoDB Troubleshooting
The following general guidelines apply to troubleshooting
When an operation fails or you suspect a bug, look at the MySQL server error log (see Section 5.4.2, “The Error Log”). Section B.3.1, “Server Error Message Reference” provides troubleshooting information for some of the common
InnoDB-specific errors that you may encounter.
If the failure is related to a deadlock, run with the
innodb_print_all_deadlocksoption enabled so that details about each deadlock are printed to the MySQL server error log. For information about deadlocks, see Section 14.7.5, “Deadlocks in InnoDB”.
Issues relating to the
InnoDBdata dictionary include failed
CREATE TABLEstatements (orphan table files), inability to open
InnoDBfiles, and system cannot find the path specified errors. For information about these sorts of problems and errors, see Section 14.22.3, “Troubleshooting InnoDB Data Dictionary Operations”.
When troubleshooting, it is usually best to run the MySQL server from the command prompt, rather than through mysqld_safe or as a Windows service. You can then see what mysqld prints to the console, and so have a better grasp of what is going on. On Windows, start mysqld with the
--consoleoption to direct the output to the console window.
InnoDBMonitors to obtain information about a problem (see Section 14.18, “InnoDB Monitors”). If the problem is performance-related, or your server appears to be hung, you should enable the standard Monitor to print information about the internal state of
InnoDB. If the problem is with locks, enable the Lock Monitor. If the problem is with table creation, tablespaces, or data dictionary operations, refer to the InnoDB Information Schema system tables to examine contents of the
InnoDBinternal data dictionary.
InnoDBtemporarily enables standard
InnoDBMonitor output under the following conditions:
A long semaphore wait
InnoDBcannot find free blocks in the buffer pool
Over 67% of the buffer pool is occupied by lock heaps or the adaptive hash index
If you suspect that a table is corrupt, run
CHECK TABLEon that table.