MariaDB(MySQL)修改表结构报表空间满

今天数据库表修改表结构,需要添加一列:

ALTER TABLE `xxxx_learn` ADD COLUMN `learn_stage_code` VARCHAR(32) NULL DEFAULT '99' COMMENT '学段' AFTER `qualified_rate`;

结果一直报错:

ERROR 1114 (HY000) at line 303: The table 'xxxx_learn' is full


刚开始以为可能硬盘空间不够,df -h 查显示正常,所有分区都有空闲。

看了网上一些文章,说是 max_heap_table_size 和 max_heap_table_size 默认太小了,需要调大。不过查看该表数据量并不大,ibd数据文件才占用了12M。我的数据库配置文件my.cnf参数 max_heap_table_size 和 max_heap_table_size 为64M,认为成功的可能性不大。抱着试一试的态度

将这两个参数 max_heap_table_size 和 max_heap_table_size 都由原来的64M增大为256M,第一次SQL命令行直接修改全局变量未成功,第二次重启数据库服务,结果运行SQL仍然报错。

查看错误日志显示也依然如旧:

2015-01-13 10:01:48 7f91f01df700  InnoDB: Warning: cannot create table `xxxx`.`#sql-2ea1_2388c` because tablespace full

150113 10:01:48 [Warning] mysqld: The table '#sql-2ea1_2388c' is full

再次修改参数 big_tables 为ON仍未解决。


最后将innodb_data_file_path参数添加了一个参数选项autoextend由原来的 innodb_data_file_path = ibdata:16M 修改为 innodb_data_file_path = ibdata:16M:autoextend,重启数据库服务重新执行SQL语句终于通过。



本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/1606527

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值