Mysql

如何修復 MySQL 數據庫中的所有索引?

  • February 19, 2021

我的數據庫已損壞,現在 php 應用程序拋出此錯誤:

Invalid query: Can't find FULLTEXT index matching the column list

該錯誤不是很有用,因為它沒有說明導致它的列/表。有沒有辦法在特定數據庫的所有表中的所有列上重新生成 FULLTEXT 索引?

謝謝

也許您應該查找所有具有全文索引的表

SELECT DISTINCT table_schema,table_name
FROM information_schema.statistics
WHERE index_type='FULLTEXT';

單獨重新製作所有具有 FULLTEXT 索引的表

REPAIR_SQL_SCRIPT=RemakeTables.sql
SQL="SELECT"
SQL="${SQL} CONCAT('ALTER TABLE ',db,'.',tb,' ENGINE=',eng,';')"
SQL="${SQL} FROM (SELECT A.table_schema db,A.table_name tb,B.engine eng"
SQL="${SQL} FROM (SELECT DISTINCT table_schema,table_name"
SQL="${SQL} FROM information_schema.statistics WHERE index_type='FULLTEXT') A"
SQL="${SQL} INNER JOIN information_schema.tables B"
SQL="${SQL} USING (table_schema,table_name)) AA"
mysql -uroot -ANe"${SQL}" > ${REPAIR_SQL_SCRIPT} 
cat ${REPAIR_SQL_SCRIPT}

如果您對 的內容沒問題RemakeTables.sql,則執行它:

mysql -uroot < ${REPAIR_SQL_SCRIPT}

CAVEAT:所有索引也都重新製作

這是修復損壞的快速步驟:

第1步

使用 telnet、ssh 或本地電腦,連接到 mySql 伺服器並登錄到 mySql 命令行工具。這可以通過 mysql -p 來完成。

第2步

使用 CHECK TABLE tablename FOR UPGRADE 命令來驗證表是否需要修復。

第 3 步

通過鍵入 x 並按“Enter”鍵退出 mysql 命令行工具。您將返回到 shell 命令提示符。

第四步

使用 mysqldump 命令轉儲表:mysqldump databaseName tableName > dump.sql。

使用 mysql 命令在數據庫中重新創建表:mysql databaseName < dump.sql。這將重建表和表索引。

引用自:https://dba.stackexchange.com/questions/52152