我在amazon的云中运行mysj的django系统,数据库默认为innodb。但现在我想在几个表上放一个全文索引进行搜索,这显然需要myisam。
显而易见的解决办法就是告诉mysql将ALTER TABLE告诉myisam,但这会有什么问题吗?
我想到的是,每当我构建新版本的数据库时,我都必须记住这样做,这在理论上应该是罕见的,但似乎没有办法告诉django请在桌面级别设置存储引擎。我想我可以编写一个迁移(我们使用南方)。
我可能遗失的任何其他事情?什么可能出错?
答案 0 :(得分:2)
申请会通知吗?可能不是。
会引起问题吗?只有当事情出错时。 MyISAM不是事务存储引擎。如果在事务内部更改MyISAM表中的数据,则必须回滚更改,则不会回滚该表中的更改。已经有一段时间了,因为我试图打破它可怕,但我愿意下注,当发生这种情况时,MySQL甚至不会发出警告。 将导致数据一致性问题。
您应该认真考虑使用外部搜索软件而不是全文索引,例如ElasticSearch(在应用程序级别集成)或Sphinx(在MySQL级别集成,但如果您使用的是RDS而不是直接使用MySQL,我认为你不能使用它。)
答案 1 :(得分:1)
以下内容可能有所帮助:
使用myisam全文表来索引回你的innodb表,例如: 使用innodb构建您的系统:...