Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd tożsamości (przy tworzeniu bazy danych) podany klucz był za długi

Sprawdzając zapytania SQL generowane przez EF, odkryłem, że problem był związany z UserName (varchar utf8 256) w tabeli AspNetUsers i Name (varchar utf8 256) w tabeli AspNetRoles, podczas gdy tabela dla HistoryRow była w porządku.

Więc poniższe kody rozwiązały problem.

    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();
    }


}

Aby wyjaśnić rozwiązanie, oto biblioteki, których używam:

  1. EF 6.1.0
  2. Microsoft ASP.NET Identity EntityFramework 2.0.0
  3. ASP.NET Identity Owin 2.0.0
  4. Biblioteki MySql .NET 6.8.3

To rozwiązanie działa również w przypadku

  1. EF 6.1.1
  2. Microsoft ASP.NET Identity EntityFramework 2.0.1
  3. ASP.NET Identity Owin 2.0.1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JPA/Hibernacja nie może utworzyć jednostki o nazwie Order

  2. Importowanie bazy danych Mysql za pomocą Ruby/Chef Recipe for Vagrant

  3. MySQL – Błąd połączenia – [MySQL][ODBC 5.3(w) Driver] Host „IP” nie może połączyć się z tym serwerem MySQL

  4. Mysql 'Funkcja WARTOŚCI' jest przestarzała

  5. błąd składni, nieoczekiwany „mysql_connect” (T_STRING)