zoukankan      html  css  js  c++  java
  • 操作MySQL出错提示“BLOB/TEXT column request_data in key specification without a key length”解决办法

    错误原因:

           查阅资料后才知道,原来Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符。所以这样的数据类型不能作为主键,也不能是UNIQUE的。所以要换成VARCHAR,但是VARCHAR类型的大小也不能大于255,当VARCHAR类型的字段大小如果大于255的时候也会转换成小的TEXT来处理。所以也同样有问题。

     解决办法:

    看了下该表的数据结构发现request_data字段类型是text

    查询了下发现是:MySQL只能将BLOB/TEXT类型字段设置索引为BLOB/TEXT数据的钱N个字符.索引指定下request_data的长度就可以了 :

    alter table foo add index request_data (request_data(10))

    联合索引

    alter table testcase add unique index(request_url,request_data(500));

     执行这条sql前先删除表中所有重数据,删除sql如下:

    DELETE testcase
    FROM
     testcase, 
     (
      SELECT
      max(id) id,
      api_purpose,
    request_url,
      request_data,
    assert_method,
    check_point,
    correlation,
    active,
    creater 
      FROM
       testcase
      GROUP BY
      api_purpose,
    request_url,
      request_data,
    assert_method,
    check_point,
    correlation,
    active,
    creater
      HAVING
       count(*) > 1
     ) t2
    WHERE
     testcase.api_purpose = t2.api_purpose 
     and testcase.api_purpose = t2.api_purpose 
     and testcase.request_url = t2.request_url 
     and testcase.request_data = t2.request_data 
     and testcase.assert_method = t2.assert_method 
     and testcase.check_point = t2.check_point 
     and testcase.correlation = t2.correlation 
     and testcase.active = t2.active 
     and testcase.creater = t2.creater 
     and testcase.id <t2.id;

     

    参考文章:

    这篇错误原因讲的很清晰

    操作MySQL出错提示“BLOB/TEXT column used in key specification without a key length”解决办法

    这篇是解决方案:

    mysql添加字段索引失败 BLOB/TEXT column 'col2' used in key specification without a key length

  • 相关阅读:
    C# macro function via #define __FILE__ __LINE__ ___FUNCTION__ __DATE__ __TIME__
    3
    2月23号
    3月26
    impala故障
    2月3号日更
    HDFS某个节点的磁盘满了
    3月2
    mq集群
    3月3
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11965981.html
Copyright © 2011-2022 走看看