问题
对新安装的 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);
使用-verboseon 标志后Update-Database,我看到导致此错误的命令如下。
CREATE index `IX_Who_Id` on `AuditLog` (`Who_Id` DESC) using HASH
在线搜索对于解决此问题并不是很有用。我见过的最接近的是这个 Stack Overflow 问题,但它对我不起作用。
背景
对旧的(大约 3 年前)MySQL 数据库运行迁移工作正常,但是当我安装新的 MySQL 时,我收到有关密码身份验证的错误,这可以通过更新 MySQL NuGet 包或强制用户使用旧版来解决密码。请参阅此处了解此问题。
我将我的 MySQL NuGet 包更新到最新版本,这导致了一个不同的错误(可以在这里看到),我通过降级到比我开始使用的包更新但比最新版本低的包来解决这个问题,因为人们已经提到 API工作正常。
所以在这个阶段它连接正常,但似乎数据库本身不喜欢实体框架生成的索引命令。
如有必要,我很乐意提供更多信息。
版本
MySql.Data 6.10.7
MySql.Data.Entity 6.10.7
实体框架 6.2.0
MySql 数据库 8.0.11 社区
更新
我设法通过手动执行 SQL 命令并.Index()
在定位 MySql 实例时替换调用,使其在 MySql 上运行。
然而,即使在显然成功运行迁移之后,MySql.Data(.Entity) 仍然继续给出运行时错误。
将 DB 恢复到 MySql 5 的先前主要版本时,代码可以完美运行,无需任何更改。
我将等待 NuGet 包和 MySql 数据库更新一段时间,然后再试一次。
海绵宝宝撒
杨魅力
相关分类