SilverStripe FulltextSearch导致数据库错误

时间:2015-02-16 23:54:22

标签: silverstripe

我遵循本教程:  https://www.cwp.govt.nz/guides/core-technical-documentation/framework/en/tutorials/4-site-search

我已完成将FulltextSearchable::enable();添加到mysite/_config.php的第一步。然后我按照建议运行dev/build但是没有成功完成,我收到此错误:

  

[用户错误]无法运行查询:ALTER TABLE" File"添加全文   " SearchFields" ("文件名","标题","内容")使用的表类型   不支持FULLTEXT索引

谷歌告诉我,我的MySQL数据库格式不正确。但SilverStripe会自动为您生成数据库。我可以更改数据库格式,但我不认为更改数据库格式是正确的方法,因为其他用户似乎可以使用该模块。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

就我的记忆力而言,SilverStripe将表格创建为InnoDB。 MySQL 5.5 documentation表示MyISAM表支持FULLTEXT索引。 InnoDB对FULLTEXT索引的支持见5.6。

  

全文索引只能用于MyISAM表。 (在MySQL 5.6及更高版本中,它们也可以与InnoDB表一起使用。)

您需要将表更改为MyISAM或更新MySQL。

Here是更改表格类型的好指南。如果网站出现故障,以下是优点:

  

要遵循的步骤:

     
      
  • 备份Mysql数据库。
  •   
  • 通过终端或phpmyadmin运行此sql查询,查找要转换为MYISAM的数据库。

         

    mysql -u username -p -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'db_name' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'" | tail -n+2 >> alter.sql

         

    注意:使用您的实际数据库名称更改db_name

  •   
  • 将alter.sql文件导入INNODB数据库
  •   

编辑:当然,您只能更改那些需要FULLTEXT索引的表。