Error number: MY-013142; Symbol: ER_SERVER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2; SQLSTATE: HY000
Message: The column count of %s.%s is wrong. Expected %d, found %d. Created with MySQL %d, now running %d. Please perform the MySQL upgrade procedure.
MySQL 错误 MY-013142(ER_SERVER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2)与表字段数量不一致有关,它指出了程序更新并引发了索引数量变化。它多半报告了在表更新时,表字段数量发现是不一致,并且通常伴随着一个表操作失败。
本错误一般发生在多行操作中,且会由于类似 ALTER TABLE 语句无法满足在表字段数量上的不一致而发生。表操作的失败也可能会来源于更多的事件,比如比如表被占用,以及索引更新时发生的错误。但该错误指示的是,服务器中的索引/字段数量和项目中的变量不一致。
常见案例
一般情况下,当企图更新一个表时,就会收到该错误消息。下面是一个典型的出现该错误的实例,其中的表名叫做“MySQL_Tbl”:
mysql> ALTER TABLE My_Table ADD COLUMN some_data int;
ERROR 13142 (HY000): Table server column count doesn’t match please update_v2
解决方法
下面是一些更新错误 MY-013142(ER_SERVER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2)的可能解决方法:
1. 使用 ALTER TABLE 语句重构表以修复 MySQL 的不一致索引,以更新表以允许表上的更改。
2. 通过使用 STRAIGHT_JOIN 来消除 JOIN 以允许表上的更改(用于表更新,但不需要查询)。
3. 重新发布所有数据库存储过程并且使用相同的参数重新运行存储过程。
4. 找出更新导致 MySQL 报告错误 MY-013142(ER_SERVER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE_V2),然后修复错误,再次运行更新或查询。
如果在尝试把表结构字段数量变更后,还是出现该误差的情况,可以考虑备份数据库,重建数据库以及重新载入表,然后再尝试更新操作。