InnoDB: Operating system error number 23 in a file

2020-04-27 03:59发布

问题:

Yesterday, my local server HDD crashes and goes for automatic scandisk at start up. I was not in office so I really don't know what had happen. But today when we start Server we are getting

130523 10:49:36  InnoDB: Operating system error number 23 in a file operation.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html
InnoDB: File name .\ibdata1
InnoDB: File operation call: 'Windows aio'.

I try to run scandisk on C: and it found 4 corrupted records, but no bad sector or something. Database Server has around 300 Database, I Am not sure how to recover it. Someone suggest delete Log files and try to set

innodb_Force_recovery = 4 

I try that too, but some of database are unavailable and crash MySql when I try to use them. I am not sure as reloading 300 database is not an easy job.

Edit:

I am on Windows 2008 Web Edition if that matters.

回答1:

Sounds like you're on Windows: the ENFILE error basically says you have too many open files. Not quite sure how exactly you get around it: in general it is somewhere between 512 and 2048 in a process.

Would suggest maybe moving all the files out of the MySQL data directory and trying to recover them one by one.



回答2:

I have the same issue but the error is pointing to another file :

InnoDB: File name .\ib_logfile0

Deleting (or renaming) both logfiles from the data directory (.\ib_logfile0 and .\ib_logfile1) solves the issue for me.