• MySQL报错:ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
  • 发布于 1周前
  • 58 热度
    5 评论
如题,MySQL报错:ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes 。但我确实需要大一点的 key ,因为这里有个 key 是文件路径 filepath(varchar),怕有些路径逆天的长,所以才希望越大越好
unique index xr_top_index(filepath,account)
但是系统不允许,感觉这样的话只好作罢?大家有没有好的解决方案?
用户评论
  • 强势控局
  • 存路径这个做法本身有点怪……我可能会选择文件的其他特征来做这个事情……

    不清楚场景,假设场景必须要存路径,考虑一下把 SOMEHASH(filepath, account), account 作为 key 呢?比如说 trigger 去 set 一下额外的列为 SHA2(CONCAT(filepath,"\\/", account), 256),把这个列作为 unique key 的一个 column 。降低碰撞概率的话,多加一种两种哈希呢?

    我是写业务的菜鸡,暂时还只能想怎么实现的问题。要不然就只能业务上限制一下了
  • 2024/4/7 21:32:00 [ 0 ] [ 0 ] 回复
  • 别来无恙
  • b 站的图片都是 sha1 ,目前还没炸,当然可能是从数字 id 算出来的,提前预演跑一遍,确定没问题。不放心的话存之前读一遍,判断是否有相同的哈希值。
  • 2024/4/7 21:31:00 [ 0 ] [ 0 ] 回复
  • 褪色时间
  • 别放索引就好了,如果要按照文件路径来搜索,当文本来搜索,如果都是精确匹配是不是可以再存一个 hash 值作为索引。
  • 2024/4/7 21:29:00 [ 0 ] [ 0 ] 回复