Error number: MY-012616; Symbol: ER_IB_MSG_791; SQLSTATE: HY000
Message: %s
该错误代码 ER_IB_MSG_791 用于表示 InnoDB 的提示信息:ER_IB_MSG_791 提示“Failed to create index/constraint on temporary table”,涵盖的SQLSTATE 为 HY000。该错误显示在创建索引或约束失败时出现。
常见原因
该错误通常是由于使用一些不容许在临时表上创建索引或约束的参数(如 WITH PARSER )触发的。受 MySQL服务器限制,不允许在临时表上创建某些类型的索引, 例如 FULLTEXT 索引。
解决方法
首先,确定引起 ER_IB_MSG_791 错误的因素, 并检查是否允许对临时表设置此类参数,或者限制数据类型,会导致不允许在此表上创建索引或约束的情况。
其次,请尝试将此查询拆分为2个单独的查询, 将索引和约束设置在非临时表上。 为此,首先使用 CREATE TABLE 或 ALTER TABLE 语句创建一个常规表,然后在该表上创建 required 索引或约束,并将该查询中用到的信息导入此新创建的表中。 最后,重新运行查询,使用非临时表,或删除临时表,确保临时表不存在,处理完错误。
如果上述解决方法无效, 则可以检查 ERRORLOG 日志以获得更多有关此错误详细信息的细节。在 MySQL server 上可以使用 mysqlbinlog 命令查看日志,并检测来自入站和出站连接。这将有助于定位到导致 ER_IB_MSG_791 错误的 SQL 语句,并检查它们的有效性。