zoukankan      html  css  js  c++  java
  • Mysql: Specified key was too long; max key length is 1000 bytes

    在使用quartz持久化的时候,笔者使用的mysql,为了以后方便迁移数据,笔者的Mysql默认引擎MyISAM

    于是顺理成章的执行了quartz-2.2.3docsdbTables ables_mysql.sql

    这不数据库就开始报错了

    [Err] 1071 - Specified key was too long; max key length is 1000 bytes

    原始sql语句

    CREATE TABLE QRTZ_JOB_DETAILS
      (
        SCHED_NAME VARCHAR(120) NOT NULL,
        JOB_NAME  VARCHAR(200) NOT NULL,
        JOB_GROUP VARCHAR(200) NOT NULL,
        DESCRIPTION VARCHAR(250) NULL,
        JOB_CLASS_NAME   VARCHAR(250) NOT NULL,
        IS_DURABLE VARCHAR(1) NOT NULL,
        IS_NONCONCURRENT VARCHAR(1) NOT NULL,
        IS_UPDATE_DATA VARCHAR(1) NOT NULL,
        REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
        JOB_DATA BLOB NULL,
        PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
    );

    即便考虑到是不是utf-8字节长度问题,修改成以下仍旧报错

    CREATE TABLE QRTZ_JOB_DETAILS
      (
        SCHED_NAME VARCHAR(120) NOT NULL,
        JOB_NAME  VARCHAR(200) NOT NULL,
        JOB_GROUP VARCHAR(200) NOT NULL,
        DESCRIPTION VARCHAR(250) NULL,
        JOB_CLASS_NAME   VARCHAR(250) NOT NULL,
        IS_DURABLE VARCHAR(1) NOT NULL,
        IS_NONCONCURRENT VARCHAR(1) NOT NULL,
        IS_UPDATE_DATA VARCHAR(1) NOT NULL,
        REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
        JOB_DATA BLOB NULL,
        PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
    )ENGINE=MyISAM DEFAULT CHARSET=utf8;

    官方也没有说明原因:只是很委婉的说推荐用innodb

    PLEASE consider using mysql with innodb tables to avoid locking issues

    经过一番搜索找到了原因,【求助】mysql:Specified key was too long; max key leng

    以下是搬运来的

    索引字段内容太大了

    索引?我没创建索引呢啊?而且表最大的字段长度才为255

    解决方法:将mysql的engine更改为InnoDB就可以了

    MySQL MyIsAm 存储引擎在创建索引的时候,索引键长度是有一个较为严格的长度限制的,所有索引键最大长度总和不能超过1000,而且不是实际数据长度的总和,而是索引键字段定义长度的总和

    1.DB engine 是MyIsAm
    2.字符集是 utf8 ,1个utf8=3bytes
    3.最后就是 (100+255)*3>1000 所以报错
     
    解决方案很多 ,修改DB engine 至 innodb,或者是更改字符集,或者是减小字段长度 皆可.
  • 相关阅读:
    使用keepalived实现双机热备
    MYSQL ERROR CODE 错误编号的意义
    Mysql slow query log
    eclipse svn 分支合并到主干
    Timer的schedule和scheduleAtFixedRate方法的区别解析
    Java内部类引用外部类中的局部变量为何必须是final问题解析
    nginx中有关命令和日志切割,配置文件加载的详细阐述
    流媒体中ffmpeg 命令的使用
    windows下搭建nginx服务器及实现nginx支持https配置流程
    mysql 中sql语句的执行顺序
  • 原文地址:https://www.cnblogs.com/passedbylove/p/7590185.html
Copyright © 2011-2022 走看看