La clé spécifiée était trop longue; La longueur maximale de la clé est de 767 octets. Erreur Mysql dans Entity Framework 6
J'ai commencer à travailler sur Asp.net Mvc-5 application à l'aide de visual studio 2012. J'ai donc téléchargé Entity Framework 6 et MySQL 6.8.3.0 de nuget. Quand j'ai essayé de créer une base de données en utilisant db commande de Contexte
dbContext.Database.CreateIfNotExists();
Cette exception levée.
Clé spécifié est trop long; max la longueur de la clé est de 767 octets
J'ai fait une recherche sur elle, mais ne trouve aucune solution. Une chose que j'ai eu au cours de ma recherche, cela peut être des caractères Unicode problème. Je ne sais pas comment faire face à ce problème.
Mis à jour
Je suis en utilisant la configuration suivante
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>
Ma DB classe de Contexte. J'ai supprimé tous les modèles de garder la gauche un modèle
public class MyContext : DbContext
{
public MyContext()
: base("myconn")
{
this.Configuration.ValidateOnSaveEnabled = false;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
public DbSet<ModelOne> ModelOne { get; set; }
}
Modèle de classe
public class ModelOne
{
[Key]
public int CreatedId { get; set; }
public Nullable<int> UserId { get; set; }
public Nullable<DateTime> Date { get; set; }
public string Description { get; set; }
}
Quelqu'un peut m'aider avec ce problème?
Merci.
source d'informationauteur Shoaib Ijaz
Vous devez vous connecter pour publier un commentaire.
J'ai changé le DbConfigurationType de DbContext.
Obtenu à partir de ce lien stackoverflow
Maintenant, il est de travail
Si vous êtes en utilisant ASP.NET Identité puis il y a 3 endroits où cela se passe
La plupart des articles, je suis tombé sur une solution qui, en gros, de réduire la longueur du nom d'utilisateur et votre adresse Email à 128 caractères. Cependant, j'ai trouvé ce qui est inacceptable parce que l'officiel spec pour l'adresse de messagerie est de 256 caractères ansi.
Ma solution a été de :
Vous pouvez trouver ma solution à https://github.com/timdinhdotcom/MySql.AspNetIdentity
Prendre un coup d'oeil à ce l'article et voir si ça aide. Surtout la
MySqlHistoryContext.cs
Configuration.cs
etMySqlInitializer.cs
classes ajouté.C'est là que vous trouverez votre solution.
Utiliser le code de configuration ci-dessous... Cela a résolu mon problème:
Si vous avez essayé toutes les réponses dans ce post, et encore obtenir l'erreur, puis essayez d'exécuter cette commande sur le serveur MySQL:
Le bug a été signalé ici: http://bugs.mysql.com/bug.php?id=4541
Vous devez voir ce lien
https://stackoverflow.com/a/27082231/929740
[DbConfigurationType(typeof(MySqlEFConfiguration))]
Je me suis débarrassé de ce problème en exécutant:
Et sans la création d'une première migration:
Les tables ont été créées sans aucun problème, ni des erreurs