MySQL Error number: 3178; Symbol: ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN; SQLSTATE: HY000 报错 故障修复 远程处理

文档解释

Error number: 3178; Symbol: ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN; SQLSTATE: HY000

Message: ADD COLUMN col…VIRTUAL, ADD INDEX(col)

错误说明:

ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN错误指示在虚拟列上不支持使用ALTER TABLE语句进行在线修改。MySQL报出此错误,表明在更改表结构时尝试使用在线表修改,但此操作对虚拟列是不可行的。

常见案例

常见的场景是在更新表结构时忘记考虑改变虚拟列的情况,因此会忽略使用ALTER TABLE语句的在线修改功能;而忘记删除虚拟列,则会出现该错误,例如尝试用ALTER TABLE DROP COLUMN语句删除虚拟列。

解决方法:

由于MySQL不支持在线更新虚拟列,因此当在修改表结构时必须为虚拟列提供离线修改的解决方案,即在ALTER TABLE DROP COLUMN语句的前面先创建一个新表,取消加入虚拟列;然后将原始表的记录从新表中插入,最后将新表重新命名为原来表的名字。


数据运维技术 » MySQL Error number: 3178; Symbol: ER_UNSUPPORTED_ALTER_ONLINE_ON_VIRTUAL_COLUMN; SQLSTATE: HY000 报错 故障修复 远程处理