Mysql
如何修復 MySQL 數據庫中的所有索引?
我的數據庫已損壞,現在 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。這將重建表和表索引。