sql >> データベース >  >> RDS >> Mysql

インデックスを作成するときに、mysqlデータベースの移行を伴うエンティティフレームワークが失敗する

    同じ問題が発生しました。投稿を読んだ後、MySqlMigrationSqlGeneratorを継承するクラスを作成し、保護されたオーバーライドMigrationStatementGenerate(CreateIndexOperation op)をオーバーライドすることにしました。 、次に移行の構成時に次を追加します: SetSqlGenerator( "MySql.Data.MySqlClient"、new 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;
        }
    }
    

    これはMigrations \ Configuration.csのコードです

        public Configuration ()
        {           
            AutomaticMigrationsEnabled = false;
            SetSqlGenerator ( "MySql.Data.MySqlClient", new myMigrationSQLGenerator ( ) );
        }
    

    これは私にとってはうまくいきます。



    1. Oracleのログテーブルから電子メール本文にデータをエクスポートする方法

    2. HAProxyを使用してPostgreSQLレプリケーションセットアップ用の単一エンドポイントを作成する方法

    3. MySQLでのRPAD()関数のしくみ

    4. phpを使用してtxtファイルをpostgresにインポートする際の問題