上一次尝试在MySql上中断后无法创建全文索引

上一次尝试在MySql上中断后无法创建全文索引,mysql,indexing,full-text-search,innodb,temporary,Mysql,Indexing,Full Text Search,Innodb,Temporary,我有一个InnoDB表,其中包含大约500万个条目。 昨天,我尝试在其中一列上创建全文索引,但不幸的是,连接在过程中几分钟就中断了,因此实际上没有创建任何索引 问题是,当我试图通过以下命令再次创建上述索引时: CREATE FULLTEXT INDEX TEXT_FULL ON MY_BIG_TABLE(TEXT_COLUMN); 它给了我以下错误: ERROR 1050 (42S01): Table 'my_db/#sql-ib131' already exists 起初我认为它只是一个名

我有一个InnoDB表,其中包含大约500万个条目。 昨天,我尝试在其中一列上创建全文索引,但不幸的是,连接在过程中几分钟就中断了,因此实际上没有创建任何索引

问题是,当我试图通过以下命令再次创建上述索引时:

CREATE FULLTEXT INDEX TEXT_FULL ON MY_BIG_TABLE(TEXT_COLUMN);
它给了我以下错误:

ERROR 1050 (42S01): Table 'my_db/#sql-ib131' already exists
起初我认为它只是一个名为“#sql-ib131”的临时表,MySql创建该表是为了完成我之前的索引请求,因此我尝试使用以下方法删除它:

drop table `#sql-ib131`;
但是MySql返回以下内容:

ERROR 1051 (42S02): Unknown table 'my_db.#sql-ib131'
(我也试过删除“sql-ib131”和“my_db/#sql-ib131”,但没有成功

注意:当我运行时:

SHOW INDEX FROM MY_BIG_TABLE;
输出中未提及全文索引

如何克服这种行为并创建所需的索引

谢谢,
Chikko.

当您中断创建索引的尝试时,InnoDB似乎无法完全清理。因此,它在数据字典中有一个条目,用于磁盘上物理上不存在的表

这里也有报道:

InnoDB在内存中的内部数据字典中维护有关表的元数据。这将存储有关以前使用过的每个InnoDB表的信息。如果关闭mysqld,内存中的数据字典将被销毁,并在重新启动mysqld后使用表时重新填充

InnoDB创建的临时表(以
#sql ibXXX
后的名称模式表示)是物理创建的,但立即取消链接

但是,如果发生了某些情况,例如您的连接突然中断,InnoDB可能无法正常清理

您应该能够通过重新启动mysqld来清除数据字典


另一种可能出现这种奇怪悖论的情况是视图,因为视图不是表,但视图名称与表名称冲突

mysql> CREATE VIEW test.V AS SELECT * FROM test.Foo;

mysql> DROP TABLE test.V;
ERROR 1051 (42S02): Unknown table 'test.V'

mysql> CREATE TABLE test.V (i INT);
ERROR 1050 (42S01): Table 'V' already exists

但这不是你的情况,因为在创建索引的ALTER table过程中,InnoDB创建的临时表上显然出现了错误。

我想知道刷新表是否有任何区别,但如果没有数据库的完整备份,请不要测试它。