2015-01-07 54 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

相關問題