EF6 MySQL错误之“Specified key was too long; max key length is 767 bytes”
2024-10-07 11:10:13
由于 MySQL Innodb 引擎表索引字段长度的限制为 767 字节,因此对于多字节字符集的大字段(或者多字段组合索引),创建索引会出现上面的错误。
以 utf8mb4 字符集 字符串类型字段为例:utf8mb4 是 4 字节字符集,则默认支持的索引字段最大长度是: 767 字节 / 4 字节每字符 = 191 字符,因此在 varchar(255) 或 char(255) 类型字段上创建索引会失败。
解决方法:
1.使用NuGet引用MySQL.Data.Entities。
2.在你的DbContext里添加代码:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyContext : DbContext
{
public MyContext() : this() { } static MyContext ()
{
DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration());
}
}
完。
最新文章
- celery使用方法
- 转:WebService通用接口
- java写入文件之txt文本
- AndroidManifest.xml中<;activity>;<;/activity>;相关属性说明
- EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~终结~配置的优化和事务里读写的统一
- Clustering with the ArcGIS API for Flex
- 尝试在Mac上编译DNX
- MySQL数据库表名、列名、别名区分大小写的问题
- iOS 捕获系统外异常
- 腾讯2013笔试题—web前端笔试题 (老题练手)
- Swift继承的用法
- sql dateDiff函数
- 深度神经网络(DNN)模型与前向传播算法
- jsp加java连接数据库,进行信息输入,并进行初步的拦截判断。
- java log4j基本配置及日志级别配置详解
- bitbucket添加ssh key
- C#之委托和事件
- axios拦截http拦截
- [PHP] try catch在日常中的使用
- JavaScript超酷时钟的制作