2015-01-07 57 views
1

我在我的服务器上收到“指定密钥太长;最大密钥长度是1000字节”。我有以下的(如果我错过关闭一个标签它只是可怜的复制和粘贴。我该如何解决“指定的密钥太长,最大密钥长度是1000字节”

<configuration> 
    <configSections> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=xxxxx" requirePermission="false" /> 
    </configSections> 
    <connectionStrings> 
    <add name="ArticleContext" providerName="MySql.Data.MySqlClient" connectionString="server=xxxxxxxx; Port=xxxx; database=xxxxxx; User Id=xxxxxx; Pwd=xxxxx" /> 
</connectionStrings> 

    <system.web> 
<httpRuntime targetFramework="4.5" /> 
    </system.web> 

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 

进一步回落

<entityFramework> 
    <contexts> 
     <context type="EverythingASP.DAL.ArticleContext, EverythingASP"> 
     <databaseInitializer type="EverythingASP.DAL.Initializer, EverythingASP" /> 
     </context> 
    </contexts> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"> 
     </provider> 
    </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.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
    </system.data> 

任何想法要寻找什么?我不知道什么关键是它指的是当使用谷歌搜索唯一的答案是关于迁移,我没有任何在这方面,据我所知,

更新#1

所有实体在创建时都会由EF自动分配ID。这个错误在启动时持续存在!

[Key] 
public int Id { get; set; } 

所以在运行时最大键值为28 ...

这是一个问题与EF6和mysql:ID被一切为我的实体定义?

+0

错误是指表上的索引,其中索引列的宽度可能超过1000字节(http://stackoverflow.com/q/8746207/314291)。它看起来像是首先使用代码EF,因此请查看实体或Fluent配置中的“Index”属性。 – StuartLC

+0

我看不到如何,这是在我的应用程序启动,我添加这样的数据: JSArticle js = new JSArticle(“评论”,“求”,1,“评论”,Difficulty.Beginner); context.JSArchive.Add(js); context.SaveChanges(); 所以基本上,我添加的最长字符串大约是15个字符...... – user2330270

+0

还有一个想法 - 如果我没有记错的话,如果没有显式定义PK,EF将假定所有列都组成表的主键。看看你的实体/流利配置,以确保一切都有一个PK或至少一个约定名为Id/TableId等 – StuartLC

回答

0

答案是将存储引擎从myisam更改为innodb。这可以在脚本中完成,或者如果您使用的是godaddy,请在每个表格和列中按下一个按钮。不要支持,他们甚至不知道它是什么。

+0

我在godaddy上有同样的错误,你可以请分享示例脚本?谢谢 – sairfan

+0

goadd你的数据库中的每张桌子上有一个按钮,正如我上面所说的... – user2330270

相关问题