You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel无法创建migrations表,报MySQL索引损坏错误

解决Laravel迁移时出现SQLSTATE[HY000]: 1005 无法创建migrations表(errno:126 索引损坏)的问题

这个错误是MySQL索引/表空间损坏导致的,以下是几个实用的解决步骤:

  • 重启MySQL服务
    先试试最简单的重启,很多临时索引异常重启后就能解决:

    • Linux系统:sudo systemctl restart mysql
    • Windows系统:打开服务管理器找到MySQL右键重启;或用命令行:net stop mysql && net start mysql
  • 检查磁盘剩余空间
    磁盘满了会导致MySQL无法写入数据、创建索引,触发这类错误:

    • Linux用df -h查看磁盘占用
    • Windows直接查看对应磁盘剩余空间,清理出足够空间后再尝试迁移
  • 删除并重建目标数据库
    若目标数据库本身表空间损坏,直接重建数据库试试:

    1. 进入MySQL命令行:mysql -u root -p
    2. 删除损坏的数据库:DROP DATABASE topsis;
    3. 重新创建符合Laravel要求的数据库:CREATE DATABASE topsis CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    4. 退出MySQL,执行Laravel迁移:php artisan migrate
  • 修复InnoDB表空间(进阶操作)
    如果是InnoDB引擎表空间损坏,需要强制恢复:

    1. 停止MySQL服务
    2. 找到MySQL配置文件(Linux为/etc/my.cnf或/etc/mysql/my.cnf,Windows为安装目录下的my.ini)
    3. 在[mysqld]段添加innodb_force_recovery = 1(从1开始尝试,尽量用最小的有效数值,数值越高恢复力度越大)
    4. 启动MySQL服务后尝试重新迁移
    5. 迁移成功后,务必删除innodb_force_recovery配置并重启MySQL
  • 检查MySQL存储引擎与权限

    • 进入MySQL执行SHOW ENGINES;,确认InnoDB的Support列是YES,若为NO,需在配置文件添加default-storage-engine=InnoDB后重启MySQL
    • Linux系统下检查MySQL数据目录权限:sudo chown -R mysql:mysql /var/lib/mysql,确保mysql用户有读写权限,之后重启服务

内容的提问来源于stack exchange,提问作者Nuril Haidar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 04:00:55