我正在使用EF代码优先迁移在MySQL上创建数据库架构。但是当我要执行更新数据库的命令时,它会出错,如下所示。
空间/全文/哈希索引和显式索引顺序使用不正确
我遵循了MySQL支持上给出的所有步骤
我试图在谷歌和堆栈溢出中搜索。但是我无法获得解决此问题的永久解决方案。
<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 服务器版本是 8.0.11。
对于实体框架代码优先,我使用以下包。
- 实体框架 - 6.2.0
- MySql.Data - 6.10.7
- MySql.Data.Entity - 6.9.12
当我使用最新版本的MySql.Data(8.0.11(时,它给了我不同的错误:
提供程序未返回提供程序清单令牌字符串。
可以尝试运行Update-Database -verbose
以查看更多日志,并确定 EF 尝试执行具有CREATE INDEX `IX_id` on `Table` (`col_Id` DESC) using HASH
此错误是由using HASH
引起的。 如果您尝试使用哈希创建索引,MySQL 服务器将返回以下消息。
错误代码: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"}))
这对我有用。