MySQL错误地使用空间/全文/散列索引和显式索引顺序

时间:2018-06-03 01:59:07

标签: c# mysql asp.net-mvc entity-framework entity-framework-6

我正在使用EF代码优先迁移来在MySQL上创建数据库模式。但是当我要执行更新数据库的命令时,它会给出错误,如下所示。

  

空间/全文/散列索引和显式索引顺序的错误使用

我按照MySQL support

上的所有步骤进行了操作

我试图在google上搜索,也在stackoverflow中搜索。但我无法获得解决此问题的永久解决方案。

  <connectionStrings>
   <add name="DefaultConnection" connectionString="Server=localhost;port=3306;database=testdb;Uid=root;password=*******;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>

我使用MySQL Workbench 6.3.10。 MySQL Server版本是8.0.11。

对于实体框架代码优先,我使用下面的包..

  • EntityFramework - 6.2.0
  • MySql.Data - 6.10.7
  • MySql.Data.Entity - 6.9.12

当我使用最新版本的MySql.Data(8.0.11)时,它给了我不同的错误:

  

提供程序未返回ProviderManifestToken字符串。

1 个答案:

答案 0 :(得分:1)

您可以尝试运行Update-Database -verbose来查看更多日志,并确定EF尝试使用CREATE INDEX `IX_id` on `Table` (`col_Id` DESC) using HASH来执行脚本

此错误是由using HASH引起的。 如果您尝试使用HASH创建索引,则MySQL Server返回以下消息。

错误代码:1221.错误地使用了空间/全文/哈希索引和显式索引顺序

在迁移脚本中找到.Index(t => t.col_Id)CreateIndex("dbo.table", "col_Id")并按如下所示进行更改:

尝试像这样使用BTrees

.Index(t => t.User_Id, anonymousArguments: new { Type = "BTrees"})

CreateIndex("dbo.table", "col_Id" , anonymousArguments: new { Type = "BTrees"}))

这对我有用。