You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何解决MySQL错误errno:135‘记录文件无剩余空间’问题

解决MySQL创建表时的errno:135 "No more room in record file"错误

你碰到的这个errno 135错误,虽然提示指向目录权限,但实际原因可能涉及磁盘空间、权限配置或MySQL表空间限制,我帮你梳理几个实用的排查和解决步骤:

1. 先检查数据库目录的磁盘剩余空间

这是触发该错误最常见的原因之一——哪怕小表能创建成功,但添加更多列时需要写入更多元数据或临时文件,磁盘空间不足就会直接报错:

  • Linux/macOS:在终端执行 df -h,找到MySQL数据目录(通常是/var/lib/mysql)对应的磁盘分区,查看剩余空间。
  • Windows:打开文件资源管理器,定位到MySQL数据存放文件夹(比如C:\ProgramData\MySQL\MySQL Server X.X\Data),右键查看磁盘属性里的可用空间。
    如果空间不足,清理磁盘上的无用文件(如旧日志、临时文件)或扩容磁盘后,再尝试执行建表/ALTER操作。

2. 验证数据库目录的权限设置

错误提示明确提到要检查数据库目录的权限,所以要确保MySQL进程对目标数据库目录有完整的读写权限:

  • Linux/macOS:
    1. 查看目标数据库目录的权限详情:ls -ld /var/lib/mysql/[你的数据库名]
    2. 如果目录所有者不是mysql用户,执行:sudo chown -R mysql:mysql /var/lib/mysql/[你的数据库名]
    3. 修正目录权限为MySQL进程可访问:sudo chmod -R 750 /var/lib/mysql/[你的数据库名]
  • Windows:
    找到数据库文件夹,右键选择「属性」→「安全」,确保运行MySQL服务的用户(通常是NETWORK SERVICELocal System)拥有「读取」「写入」权限。

3. 检查系统临时目录的可用空间

MySQL创建表或执行ALTER操作时,会依赖系统临时目录(比如Linux的/tmp、Windows的C:\Windows\Temp)存放临时文件,如果临时目录所在磁盘满了,也会触发这个错误:

  • 按照第一步的方法检查临时目录所在磁盘的剩余空间,清理过期临时文件释放空间。
  • 若需要,可修改MySQL的tmpdir配置项,指定一个空间更充足的目录作为临时目录,修改后重启MySQL服务。

4. 排查InnoDB表空间配置(若使用InnoDB引擎)

你的表包含外键,默认会使用InnoDB引擎。如果InnoDB的共享表空间(比如ibdata1)设置了固定大小且已占满,也会出现该错误:

  1. 打开MySQL配置文件(my.cnf/my.ini),查找innodb_data_file_path参数,如果是类似ibdata1:10M;ibdata2:10M的固定大小配置,会限制表空间扩展。
  2. 修改为支持自动扩展的配置,例如:innodb_data_file_path = ibdata1:10M:autoextend
  3. 重启MySQL服务(注意:修改表空间配置前,请务必备份数据,避免意外)

最后重试操作

完成上述排查修复后,重新执行你的建表语句:

create table measurement( 
    user_id int(7), 
    age int(3), 
    gender varchar(8), 
    height int(5), 
    weight int(5), 
    bmi int(5), 
    body_fat int(5), 
    lean_mass int(5), 
    measurement_date date, 
    PRIMARY key (user_id), 
    FOREIGN key(user_id) REFERENCES user_info(user_id) 
);

或者尝试ALTER TABLE添加列,应该就能成功执行了。

内容的提问来源于stack exchange,提问作者Jushraf Rahi

火山引擎 最新活动