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

ID(データベース作成時)エラー指定キーが長すぎました

    EFによって生成されたSQLクエリを確認したところ、問題はテーブルAspNetUsersのUserName(varchar utf8 256)とテーブルAspNetRolesのName(varchar utf8 256)に関連していることがわかりましたが、HistoryRowのテーブルは問題ありませんでした。

    したがって、次のコードで問題が解決しました。

        public class WebPortalDbContext : IdentityDbContext<ApplicationUser>
    {
        public WebPortalDbContext()
            : base("IdentityConnection")
        {
    
        }
    
        public static WebPortalDbContext Create()
        {
            return new WebPortalDbContext();
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
    
            modelBuilder.Entity<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>()
                .Property(c => c.Name).HasMaxLength(128).IsRequired();
    
            modelBuilder.Entity<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>().ToTable("AspNetUsers")//I have to declare the table name, otherwise IdentityUser will be created
                .Property(c => c.UserName).HasMaxLength(128).IsRequired();
        }
    
    
    }
    

    解決策を明確にするために、私が使用しているライブラリは次のとおりです。

    1. EF 6.1.0
    2. Microsoft ASP.NET Identity EntityFramework 2.0.0
    3. ASP.NET Identity Owin 2.0.0
    4. MySql.NETライブラリ6.8.3

    そして、このソリューションは

    でも機能します
    1. EF 6.1.1
    2. Microsoft ASP.NET Identity EntityFramework 2.0.1
    3. ASP.NET Identity Owin 2.0.1


    1. SQLAlchemyで接続タイムアウトを設定する方法

    2. MSSQLスクリプトをMysqlとOracleに変換します

    3. 最初の実行時にsqliteデータベースをロードできません

    4. 2つの出力列に分割されたcaseステートメントオプション