在实体框架的mysql中,是什么导致了这个错误?我可以生成迁移脚本并连接到数据库,但它不喜欢在尝试创建索引时生成的sql,尤其是“hash”。
例子:
CREATE index `IX_Facility_ID` on `Contact.Address` (`Facility_ID` DESC) using HASH
错误:
mysql.data.mysqlclient.mysqlexception(0x80004005):空间/全文/哈希索引和显式索引顺序的用法不正确
有什么办法吗?这是EF6和最新的mysql DLL。
3条答案
按热度按时间zaqlnxep1#
查看mysql源代码,您需要在索引定义中添加以下内容(匿名参数:new{type=“btrees”}):
这不是一个修复程序,但目前您可以应用迁移代码。
g2ieeal72#
我也遇到了同样的问题,在阅读了文章之后,我决定创建一个类继承mysqlmigrationsqlgenerator并覆盖protected override migrationstatement generate(createindexoperation op),然后在迁移的配置上添加:setsqlgenerator(“mysql.data.mysqlclient”,new mymigrationsqlgenerator());
这是类的代码:
这是migrations\configuration.cs上的代码:
这是我的工作。
r6l8ljro3#
我认为线程区域设置更改优先于默认生成方法是比henoc salinas更好的解决方案。在标准实现中可能存在另一个隐藏的缺陷,而且每次更新mysql包时都需要支持这一点。
只需在调用之前更改区域性信息,然后在需要时恢复。
这是修改后的版本:
另外,如果不关心区域设置持久性(代码优先模型),则可以在setsqlgenerator方法调用之前指定线程区域设置