创建索引时,带有mysql数据库迁移的实体框架失败

and*_*ins 4 mysql mysql-connector entity-framework-6

是什么在带有实体框架的MySQL中导致此错误?我可以生成迁移脚本并连接到数据库,但是当尝试创建索引时,它不像生成的SQL特别是“哈希”。

例:

CREATE index  `IX_Facility_ID` on `Contact.Address` (`Facility_ID` DESC) using HASH
Run Code Online (Sandbox Code Playgroud)

错误:

MySql.Data.MySqlClient.MySqlException(0x80004005):不正确使用空间/全文/哈希索引和显式索引顺序

有没有办法解决?这是EF 6和最新的mysql dll。

hen*_*nas 5

我遇到了同样的问题,在阅读文章后,我决定创建一个继承自MySqlMigrationSqlGenerator的类并覆盖受保护的覆盖MigrationStatement Generate(CreateIndexOperation op),然后在配置迁移时添加:SetSqlGenerator(“ MySql.Data.MySqlClient”,新的myMigrationSQLGenerator ());

这是类的代码:

public class myMigrationSQLGenerator : MySqlMigrationSqlGenerator
{
    private string TrimSchemaPrefix ( string table )
    {
        if ( table.StartsWith ( "dbo." ) )
            return table.Replace ( "dbo.", "" );
        return table;
    }

    protected override MigrationStatement Generate ( CreateIndexOperation op )
    {
        var u = new MigrationStatement ( );
        string unique = ( op.IsUnique ? "UNIQUE" : "" ), columns = "";
        foreach ( var col in op.Columns )
        {
            columns += ( $"`{col}` DESC{( op.Columns.IndexOf ( col ) < op.Columns.Count - 1 ? ", " : "" )}" );
        }
        u.Sql = $"CREATE {unique} INDEX `{op.Name}` ON `{TrimSchemaPrefix ( op.Table )}` ({columns}) USING BTREE";
        return u;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是Migrations \ Configuration.cs上的代码:

    public Configuration ()
    {           
        AutomaticMigrationsEnabled = false;
        SetSqlGenerator ( "MySql.Data.MySqlClient", new myMigrationSQLGenerator ( ) );
    }
Run Code Online (Sandbox Code Playgroud)

这项工作对我来说。

  • 这也对我有所帮助,但我遇到了与我当前的文化(瑞典语)相关的完全不同的问题,而后者又无法解析 MySql 的版本。我收到“System.FormatException:输入字符串的格式不正确”。当 MySqlMigrationSqlGenerator 执行 ParseDouble 时。我已将其报告为错误:https://bugs.mysql.com/bug.php?id=92561 (2认同)