Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Angegebener Schlüssel war zu lang; Die maximale Schlüssellänge beträgt 767 Bytes - ASPNet Identity MySQL

Ich habe die Antwort selbst gefunden.

Das Problem hatte mit dem Benutzernamen und der E-Mail-Adresse in der Benutzertabelle zu tun. Und dann der Name in der Rollentabelle.

Ich habe eine maximale Länge für alle drei in meiner IdentityModel-Klasse hinzugefügt. Hier ist es:

    [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("CaptureDBContext", throwIfV1Schema: false)
        {
        }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<ApplicationUser>().Property(u => u.UserName).HasMaxLength(255);
            modelBuilder.Entity<ApplicationUser>().Property(u => u.Email).HasMaxLength(255);
            modelBuilder.Entity<IdentityRole>().Property(r => r.Name).HasMaxLength(255);
        }
    }
}

Oh, und das Hinzufügen von DbConfigurationType to be MySQL löst das Problem mit der Migrationsverlaufstabelle (das wusste ich bereits).

Unglücklicher Musefan