MySQL Error number: MY-013080; Symbol: ER_IB_MSG_1255; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-013080; Symbol: ER_IB_MSG_1255; SQLSTATE: HY000
Message: %s
错误说明: ER_IB_MSG_1255错误在MySQL中是提示分区表中的列数不正确的一种错误。此时,MySQL服务器尝试将列添加到一个已存在的分区表中,但是当前表中的列数并不能承载新的列,因此抛出了此错误。此错误的全称为 “Error Number : ER_IB_MSG_1255:Index column size too large;index treated as error”,其对应的错误代码为HY000。
常见案例
• 尝试添加超出索引表可承载列大小的列数组成的聚集索引;
• 当聚集索引中的列大于7个时,出现该错误;
• 尝试在索引表中添加超出索引表可承载列大小的列。
解决方法:如果出现ER_IB_MSG_1255错误,首先需要尝试缩减索引列或索引数量,以便满足聚集索引中列数量的上限。也可以通过修改my.cnf / my.ini配置文件中的max_columns或max_indexes参数,以扩大索引表的支持的最大列数量。当更改完参数后,重启MySQL服务器使改动生效。
如果修改上述配置文件中的参数不可行,用户可以尝试改变MySQL服务器支持的索引以允许更多的列,或将现有建表语句重新调整:
• 使用ALTER TABLE [table] DROP INDEX [index]改变现有索引表;
• 使用CREATE TABLE [table] (…fields…)创建一个新的表,其中有一个以上的列;
• 将表中的数据移动到被改变的表,使用INSERT INTO [newtable] SELECT * FROM [oldtable];
• 修改为一个索引列数在MySQL服务器支持范围内的索引;
• 将新的表替换旧的表,使用RENAME TABLE [oldtable] TO [newtable];
• 为表创建多个索引,而不是一个索引。
在执行这些操作之前,最好先备份数据库,以防出现意外情况。