How to Fix an (errno: 24) in MySQL
转自:http://info.solomonson.com/content/how-fix-errno-24-mysql
When creating a large number of partitions or tables, MySQL may mysteriously stop working and you find this type of error on/var/lib/mysql/$HOSTNAME.err
:
[ERROR] /usr/sbin/mysqld: Can't open file: './database/table.frm' (errno: 24)
errno: 24
simply means that too many files are open for the given process. There is a read-only mysql variable calledopen_files_limit
that will show how many open files are allowed by the mysqld
:
SHOW VARIABLES LIKE 'open%'
A lot systems set this to something very low, like 1024. Unfortunately, the following will NOT work:
SET open_files_limit=100000
MySQL will respond with:
ERROR 1238 (HY000): Variable 'open_files_limit' is a read only variable
However, it is possible to make a change to /etc/my.cnf
. This file may not exist, if not, just create it. Be sure it has the following contents:
[mysqld] open_files_limit = 100000
Then, be sure to restart mysql:
sudo /etc/init.d/mysql restart
Now, SHOW VARIABLES LIKE 'open%'
should show 100000. The number you use may be different.
A database is represented by a directory under the data directory, and the directory is intended for storage of table data.
The DROP DATABASE
statement will remove all table files and then remove the directory that represented the database. It will not, however, remove non-table files, whereby making it not possible to remove the directory.
MySQL displays an error message when it cannot remove the directory
you can really drop the database manually by removing any remaining files in the database directory and then the directory itself.