MySQL执行mysqld --initialize时出现InnoDB错误87如何解决?
解决MySQL初始化时InnoDB AIO写入错误(OS Error 87/187)
我之前在Windows上安装解压版MySQL时也碰到过一模一样的InnoDB错误,结合你给出的日志信息,这大概率是异步IO(AIO)兼容性问题加上可能的权限/残留文件导致的,给你几个一步步的解决方法:
禁用InnoDB原生异步IO
Windows环境下MySQL的原生AIO有时候会出现兼容性问题,直接禁用就能解决这个核心错误。你需要在MySQL根目录创建(或修改)my.ini配置文件,添加以下内容:[mysqld] basedir=D:\你的MySQL解压路径(比如D:\mysql-8.0.36-winx64) datadir=D:\你的MySQL数据存储路径(比如D:\mysql-8.0.36-winx64\data) innodb_use_native_aio=0 explicit_defaults_for_timestamp=1 # 顺便解决那个TIMESTAMP警告注意替换成你自己的实际路径,保存后再重新执行初始化命令。
清理残留的初始化文件
如果之前执行过mysqld --initialize失败,datadir目录里会留下损坏的日志文件(比如你日志里的ib_logfile101),这些残留会导致再次初始化失败。请:- 确保MySQL服务没有运行(如果已经注册过服务的话先停止)
- 清空
datadir目录下的所有文件和文件夹 - 重新执行
mysqld --initialize
检查目录权限
错误码87也可能和权限不足有关,确保你的Windows用户对MySQL的安装目录和datadir目录拥有完全控制权限:- 右键点击目录 → 属性 → 安全选项卡
- 找到当前登录用户,勾选“完全控制”的允许权限
- 点击应用后再尝试初始化
按照这个顺序操作,基本就能解决这个InnoDB无法继续运行的问题了。
内容的提问来源于stack exchange,提问作者moses toh
相关产品推荐
相关产品推荐

