Error number: MY-010762; Symbol: ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE; SQLSTATE: HY000
Message: Error in setting handler reference for table %s.%s
Error Number:MY-010762; Symbol:ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE; SQLSTATE:HY000
错误说明
MY-010762错误号与ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE标志的MySQL错误消息指示MySQL无法设置引用HANDLER。由于此错误是由MySQL触发的,因此具体错误信息与MySQL版本有关,以下是MySQL 8.0.20中定义的消息:
ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE:无法为表“[table]”设置引用处理程序“[handler]”
此错误是MySQL在执行ALTER TABLE或CREATE TABLE子句时出现的,表明HANDLER子句引用的存储引擎必须有“WITH HANDLER”语法支持,以便设置引用。
常见案例
此错误在执行以下查询时出现:
ALTER TABLE实例:
ALTER TABLE t1 ENGINE=MyISAM WITH HANDLER t1 READ=s1 WRITE=s1;
CREATE TABLE语法:
CREATE TABLE t2 ENGINE=MyISAM WITH HANDLER t2 READ=s2 WRITE=s2;
上述两个查询将产生MY-010762和ER_CANT_SET_HANDLER_REFERENCE_FOR_TABLE错误。
解决方法
此类错误原因是因为用户无法更改表引擎。明确指定因此无需更改表引擎即可解决此问题。
在使用ALTER TABLE语法时,可以使用下列指令来消除此错误:
ALTER TABLE t1 ENGINE=MyISAM WITH HANDLER t1 READ=s1 WRITE=s1;
相反,在使用CREATE TABLE语法时,可以使用下列指令来消除此错误:
CREATE TABLE t2 ENGINE=MyISAM HANDLER t2 READ=s2 WRITE=s2;
使用此解决方案,用户不需要更改原始表引擎,即可成功创建表。