【问题标题】:Adding Fulltext index crashes MySQL Service添加全文索引会导致 MySQL 服务崩溃
【发布时间】:2013-07-18 13:20:00
【问题描述】:

我正在尝试将全文索引添加到表中。当我运行查询时,

ALTER TABLE thisTable ADD FULLTEXT(thisText);  

我收到消息

SQL 错误 (2013):查询期间丢失与 MySQL 服务器的连接

mysql 服务确实会停止。如果我重新启动服务并尝试再次添加索引,我会收到另一个错误。

SQL 错误 (1813):表 'thisTable/#sql-ib21134' 的表空间存在。请在 IMPORT 之前丢弃表空间。

引擎是 InnoDb,我运行 MySQL 5.6.12,所以应该支持全文索引。该列是 TEXT 列。

如果有人能指出错误的正确方向,我将不胜感激。

【问题讨论】:

  • error log 有什么有趣的地方吗?如果日志没有启用,请启用它并重现崩溃。
  • 我在 MySQL 5.7 上遇到了同样的问题,所以他们显然没有修复它。我在日志中看到此错误:2016-07-15 12:22:36 0x7f65a97fa700 InnoDB:文件 row0merge.cc 第 1009 行中线程 140074612139776 中的断言失败 InnoDB:断言失败:b == &block[0] + buf->total_size

标签: mysql innodb full-text-search


【解决方案1】:

问题与排序缓冲区大小有关。这是 mysql/mariadb/percona 的已知错误。 即使几个月后我报告了这个错误,它也没有修复(我们使用的是最新的 Mariadb)

【讨论】:

    【解决方案2】:

    第二个错误发生是因为表(或全文index table)在服务器崩溃时被部分修改(或创建)。从头开始删除并重新创建您的表。

    现在,为什么服务器崩溃了?很难确定,但很可能某些缓冲区已达到容量。通常的嫌疑人是innodb_buffer_pool_size。尝试逐步增加它。

    【讨论】:

    • 我尝试将缓冲池增加到几GB,但仍然无法成功添加全文索引。
    【解决方案3】:

    不幸的朋友......

    InnoDB 表不支持 FULLTEXT 索引。

    来源 - http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html

    【讨论】:

    • 这实际上并不完全正确:在 MySQL 5.6 及更高版本中,它们也可以与 InnoDB 表一起使用。 Quelle
    • dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html: "InnoDB 表支持 FULLTEXT 索引,从 MySQL 5.6.4 开始"。请更新您的书签。
    • 我的错。回到你的问题,表中有数据吗?多少行?
    • 我用 3 张桌子试了一下。一个没有数据,一个只有 30 行,最后一个有 240.000 行。结果总是一样的。
    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2023-03-14
    • 2013-01-16
    • 2019-05-31
    • 2021-10-18
    相关资源
    最近更新 更多