在MySQL数据库上运行迁移时出现实体框架错误."空间/全文/哈希索引和显式索引顺序的使用不正确"

Gee*_*_SO 6 c# mysql entity-framework entity-framework-6 mysql-8.0

问题

在针对新安装的MySQL数据库运行迁移时(对SQL Server数据库运行正常),它在第一个创建表上失败,并显示错误:

空间/全文/散列索引和显式索引顺序的使用不正确

尝试运行以下Index方法时会发生这种情况:

CreateTable(
    "dbo.AuditLog",
    c => new
    {
        Id = c.Int(nullable: false, identity: true),
        Name = c.String(maxLength: 1000, unicode: false),
        What = c.String(maxLength: 1000, unicode: false),
        When = c.DateTime(nullable: false, precision: 6),
        Why = c.String(maxLength: 1000, unicode: false),
        Where = c.Int(nullable: false),
        Who_Id = c.String(maxLength: 128, unicode: false),
    })
    .PrimaryKey(t => t.Id)
    .ForeignKey("dbo.AspNetUsers", t => t.Who_Id);
    .Index(t => t.Who_Id);
Run Code Online (Sandbox Code Playgroud)

使用该-verbose标志后Update-Database,我看到导致此错误的命令如下.

CREATE index  `IX_Who_Id` on `AuditLog` (`Who_Id` DESC) using HASH
Run Code Online (Sandbox Code Playgroud)

在线搜索对解决这个问题并不是很有用.我见过的最接近的是这个Stack Overflow问题,但它对我不起作用.


背景

针对旧的(〜3年前)MySQL数据库运行迁移工作正常,但是当我安装新MySQL时,我收到了有关密码身份验证的错误,这可以通过更新MySQL NuGet包来解决,或者强制用户使用遗留密码.在这里看到这个问题.

我将我的MySQL NuGet软件包更新到了​​最新版本,这导致了一个不同的错误(可以在这里看到),我通过降级到比我开始时更新的软件包解决了但是低于最新版本,因为人们提到API不是工作正常.

所以在这个阶段它连接得很好,但似乎数据库本身不喜欢Entity Framework正在生成的索引命令.

如有必要,我很乐意提供更多信息.

版本

  • MySql.Data 6.10.7
  • MySql.Data.Entity 6.10.7
  • EntityFramework 6.2.0
  • MySql数据库8.0.11社区

更新

我设法通过执行SQL命令手动在MySql上运行,并.Index()在定位MySql实例时替换调用.

但是,即使在成功运行迁移之后,MySql.Data(.Entity)也不断发出运行时错误.

将数据库恢复为MySql 5的上一个主要版本时,代码可以完美地运行而无需任何更改.

我会等待一段时间让NuGet包和MySql数据库更新,然后再给它一次.

归档时间:

查看次数:

618 次

最近记录:

7 年,2 月 前