作者:lixinleslee | 来源:互联网 | 2022-12-16 10:26
问题
在针对新安装的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);
使用该-verbose
标志后Update-Database
,我看到导致此错误的命令如下.
CREATE index `IX_Who_Id` on `AuditLog` (`Who_Id` DESC) using HASH
在线搜索对解决这个问题并不是很有用.我见过的最接近的是这个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数据库更新,然后再给它一次.