1.建用户信息表 tb_person_info

  1. create table tb_person_info(
  2. user_id int(10) auto_increment,
  3. `name` varchar(32) default null,
  4. gender varchar(2) default null,
  5. profile_img varchar(1024) default null,
  6. email varchar(1024) default null,
  7. enable_status int(2) not null default 0 comment '0:禁止访问商城,1:允许访问商城',
  8. user_type int(2) not null default 1 comment '1:顾客,2:商家,3:超级管理员',
  9. create_time datetime default null,
  10. last_edit_time datetime default null,
  11. primary key(user_id)
  12. );

2.建微信账号表 tb_wechat_auth

  1. create table tb_wechat_auth(
  2. 2 wechat_auth_id int(10) auto_increment,
  3. user_id int(10) not null,
  4. 4 open_id varchar(1024) not null,
  5. create_time datetime default null,
  6. 6 primary key(wechat_auth_id),
  7. 7 constraint fk_wechatauth_profile foreign key(user_id)
  8. 8 references tb_person_info(user_id),
  9. 9 unique key(open_id)
  10. );

出现错误提示:[Err] 1071 - Specified key was too long; max key length is 767 bytes

错误地方:

  open_id varchar(1024) not null

原因分析:
   数据库表采用utf8编码,其中varchar(1024)的column进行了唯一键索引,而mysql默认情况下单个列的索引不能超过767位(不同版本可能存在差异)
  于是utf8字符编码下,1024*3 byte 超过限制676位,所以才会报错。由此反推,676/3 ≈ 225 ,所以varchar最高值为255。
 
3.验证原因分析
  第一步:修改为256试试
  1. create table tb_wechat_auth(
  2. wechat_auth_id int(10) auto_increment,
  3. user_id int(10) not null,
  4. 4 open_id varchar(256) not null,
  5. create_time datetime default null,
  6. primary key(wechat_auth_id),
  7. constraint fk_wechatauth_profile foreign key(user_id)
  8. references tb_person_info(user_id),
  9. 9 unique key(open_id)
  10. );

仍然报错:[Err] 1071 - Specified key was too long; max key length is 767 bytes

  第二步:修改为255试试
  1. create table tb_wechat_auth(
  2. wechat_auth_id int(10) auto_increment,
  3. user_id int(10) not null,
  4. 4 open_id varchar(255) not null,
  5. create_time datetime default null,
  6. primary key(wechat_auth_id),
  7. constraint fk_wechatauth_profile foreign key(user_id)
  8. references tb_person_info(user_id),
  9. 9 unique key(open_id)
  10. );

原因分析正确,建表成功!展示如下

1.栏位

2.索引

3.外键

总结:varchar(n),n≤255

 
 
 

Navicat for Mysql中错误提示索引过长1071-max key length is 767 byte的更多相关文章

  1. EF MySQL 提示 Specified key was too long; max key length is 767 bytes错误

    在用EF的CodeFirst操作MySql时,提示 Specified key was too long; max key length is 767 bytes错误,但数据库和表也建成功了.有高人知 ...

  2. Hive集成Mysql作为元数据时,提示错误:Specified key was too long; max key length is 767 bytes

    在进行Hive集成Mysql作为元数据过程中.做全然部安装配置工作后.进入到hive模式,运行show databases.运行正常,接着运行show tables:时却报错. 关键错误信息例如以下: ...

  3. mysql 索引过长1071-max key length is 767 byte

    问题 create table: Specified key was too long; max key length is 767 bytes   原因 数据库表采用utf8编码,其中varchar ...

  4. 【转】mysql 索引过长1071-max key length is 767 byte

    问题 create table: Specified key was too long; max key length is 767 bytes 原因 数据库表采用utf8编码,其中varchar(2 ...

  5. 数据库操作提示:Specified key was too long; max key length is 767 bytes

    操作重现: 法1:新建连接——>新建数据库——>右键数据库导入脚本——>提示:Specified key was too long; max key length is 767 by ...

  6. 索引长度过长 ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

    1.发现问题 今天在修改innodb表的某个列的长度时,报如下错误: alter table test2 modify column id varchar(500); ERROR 1071 (4200 ...

  7. Specified key was too long; max key length is 767 bytes mysql

    Specified key was too long; max key length is 767 bytes 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该 ...

  8. hive mysql元数据,报错 Specified key was too long; max key length is 767 bytes

    Specified key was too long; max key length is 767 bytes 此错误为hive 元数据mysql 字符集编码问题 如 show create tabl ...

  9. 关于MySQL字符集问题:Specified key was too long; max key length is 767 bytes

    [文章来源]http://blog.csdn.net/cindy9902/article/details/6215769 MySQL: ERROR 1071 (42000): Specified ke ...

随机推荐

  1. artDialog组件应用学习(五)

    一.artDialog事件应用 对话框编写代码 function DialogEvent() { seajs.use(['jquery', '/Scripts/arale/artDialog/src/ ...

  2. 【Linux】安装配置Tomcat7

    第一步:下载Tomcat安装包 下载地址:https://tomcat.apache.org/download-70.cgi [root@localhost ~]# wget http://mirro ...

  3. java集合框架(一):HashMap

    有大半年没有写博客了,虽然一直有在看书学习,但现在回过来看读书基本都是一种知识“输入”,很多时候是水过无痕.而知识的“输出”会逼着自己去找出没有掌握或者了解不深刻的东西,你要把一个知识点表达出来,自己 ...

  4. 提取url中参数的方法(转换成json格式)

    还是直接上代码吧. //将url中的参数获取到并抓换成json格式 function serilizeUrl(url){ var urlObject={}; //1.正则匹配是不是以?结尾 if(/\ ...

  5. .NET开源工作流RoadFlow-表单设计-子表

    子表即明细表 从表:与主表对应在子表. 从表主键:从表的主键. 主表字段:主表中与从来关联的字段,一般为主表的主键. 与主表关联字段:从表中与主表关联的字段. 选择之后即可在下面从表字段列表中设置每个 ...

  6. HTML 5入门知识(四)

    表单的作用 表单不是表格,既不用来显示数据,也不用来布局网页.表单提供一个界面,一个入口,便于用户把数据提交给后台程序进行处理. 表单的数据传递方式method属性 表单的method属性用于指定在数 ...

  7. JSTL格式化标签库

    导入标签库需要使用taglib指令! <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/forma ...

  8. 初学jboss

    1.简单安装-环境变量配置-创建控制台用户并访问控制台.   下载了windows版的jboss服务器(jboss-as-7.1.1.Final)     依赖JDK1.6以上版本,jdk环境变量等就 ...

  9. 大数据的正确用法你get到了吗?

    Azure 镜像市场已于2016年9月21日正式上线,在这个统一的集成平台中,客户可以轻松地浏览.搜索和选择一系列来自第三方的应用和解决方案,并可以将其快速一键部署到 Azure 实例当中. 在移动为 ...

  10. SpringMVC方法接收参数可以为空、默认值设置