创建一张表,其中有个varchar 大字段,并且在这个字段上建索引,结果发现MySQL报错:

ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.

以下为建表语句:

create table piratebay(
SYS_ID      int ,
FILE_NAME    VARCHAR(200),
FILE_ID     VARCHAR(30),
NUM1        VARCHAR(30),
NUM2        VARCHAR(30),
MAGNET_LINK VARCHAR(500),
PRIMARY KEY (sys_id),
KEY         piratebay_n1 (FILE_NAME))
engine=innodb;

MySQL 环境配置:

Server version: 5.6.28-log MySQL Community Server (GPL)

Server characterset: utf8mb4
Db       characterset: utf8mb4

解决办法:

(1)查看相关配置并作出如下设置

innodb_large_prefix = ON 
innodb_file_format = Barracuda 
innodb_file_per_table = ON

(2)修改建表语句,加入 row_format=DYNAMIC

create table piratebay(
SYS_ID      int ,
FILE_NAME    VARCHAR(200),
FILE_ID     VARCHAR(30),
NUM1        VARCHAR(30),
NUM2        VARCHAR(30),
MAGNET_LINK VARCHAR(500),
PRIMARY KEY (sys_id),
KEY         piratebay_n1 (FILE_NAME))
engine=innodb row_format=dynamic;

原因:

MySQL 索引只支持767个字节,utf8mb4 每个字符占用4个字节,所以索引最大长度只能为191个字符,即varchar(191),若想要使用更大的字段,mysql需要设置成支持数据压缩,并且修改表属性 row_format ={DYNAMIC|COMPRESSED}

官方解释:

https://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_large_prefix

MySQL ERROR 1709 (HY000)相关推荐

  1. mysql错误码1709_MySQL5.6出现ERROR 1709 (HY000): Index column size too large问题的解决方法...

    一.问题 mysql 5.6 出现如下问题: [ERROR 1709 (HY000): Index column size too large. The maximum column size is ...

  2. Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法

    MySQL ERROR 1366(HY000):Incorrect string value,在往数据库中插入中文的时候会出现. 这也就是编码问题,网上大部分都是说设置下配置文件中的设置,而可悲的是在 ...

  3. linux mysql 1366_Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法

    MySQL ERROR 1366(HY000):Incorrect string value,在往数据库中插入中文的时候会出现. 这也就是编码问题,网上大部分都是说设置下配置文件中的设置,而可悲的是在 ...

  4. mysql error 1130 hy000:Host ‘localhost‘ is not allowed to connect to this mysql server 解决方案

    mysql error 1130 hy000:Host 'localhost' is not allowed to connect to this mysql server 解决方案 参考文章: (1 ...

  5. mysql ERROR 1396 (HY000): Operation CREATE USER failed 解决办法

    mysql ERROR 1396 (HY000): Operation CREATE USER failed 解决办法 mysql 创建用户的时候: create user 'hive' identi ...

  6. mysql ERROR 1114 (HY000): The table ‘XXX‘ is full

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 报错: mysql ERROR 1114 (HY000): The table 'XXX' is full 解决方法: 修改 my.cnf 配 ...

  7. mysql hy000 1005,mysql – ERROR 1005(HY000):无法创建表(errno:150)

    当我尝试在 mysql中创建一个表时,我收到一个错误. 任何提示解决吗? create table stock_in( ind int not null auto_increment, itemcod ...

  8. Mysql ERROR 145 (HY000)

    问题:今天Mysql数据库异常关闭,起来之后感觉可以了. 但是运行业务数据的时间就类似如下的错误 ERROR 145 (HY000) at line 34: Table './database_nam ...

  9. mysql ERROR 1042 (HY000): Can't get hostname for your address

    2019独角兽企业重金招聘Python工程师标准>>> mysql 访问vmware中的mysql server,报错. ERROR 1042 (HY000): Can't get ...

最新文章

  1. 自己看着视频的理解:设计模式之abstractfactory模式(2)
  2. 富士通台式电脑_英特尔X86架构霸权终将崩塌,ARM架构才是未来PC电脑市场的王者?...
  3. 分布式服务下,消息中间件改造
  4. 轮廓处理函数详细(转)
  5. python自动写作软件_开发了一款写作软件(OSX,Windows),附带Electron开发指南
  6. 3.3、自定义错误页面
  7. 19-数据持久化-Bind Mounting
  8. Struts2框架学习笔记1
  9. Linux 系统运行速度太慢的关键原因全都在这了
  10. 转:有效沟通的四种工具
  11. 佳能mp145/mp140/mp288打印机 e16代码怎么处理
  12. 2022-2027年中国小麦加工行业市场深度分析及投资战略规划报告
  13. Coolpad/酷派炫影5890 root教程_方法
  14. 团队如何开会,开会准则
  15. 批量添加文件名前后缀的工具_艾孜尔江撰
  16. 《剑破武林》用户注册协议
  17. Android开发基础——RecyclerView
  18. 易数云数据抓取词云图制作
  19. 【TensorFlow2.0】如何搭建网络模型?
  20. 普通用户和计算机管理员,软件运行需要管理员权限,怎么让普通用户也能

热门文章

  1. 2018 年度阿里云存储十大新闻盘点
  2. 基金训练营学习笔记7-止盈
  3. C++(10-2)——类的使用
  4. 程序员装机软件 list
  5. oracle数据库中的虚拟表,Oracle10g中的虚拟专用数据库(VPD)
  6. bios设置raid启动模式Linux,手把手教你做raid,各主板raid开启设置方法
  7. 转:程序员必读书单 1.0
  8. 【汇正财经】什么是红筹股?
  9. bootstrap-table固定表的高度
  10. MacBook随笔之快捷键二(访达和系统快捷键)