我遵循本教程: https://www.cwp.govt.nz/guides/core-technical-documentation/framework/en/tutorials/4-site-search
我已完成将FulltextSearchable::enable();
添加到mysite/_config.php
的第一步。然后我按照建议运行dev/build
但是没有成功完成,我收到此错误:
谷歌告诉我,我的MySQL数据库格式不正确。但SilverStripe会自动为您生成数据库。我可以更改数据库格式,但我不认为更改数据库格式是正确的方法,因为其他用户似乎可以使用该模块。[用户错误]无法运行查询:ALTER TABLE" File"添加全文 " SearchFields" ("文件名","标题","内容")使用的表类型 不支持FULLTEXT索引
任何帮助都将不胜感激。
答案 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
索引的表。