首页 > 数据库 >mysql字段过长无法作为约束、索引的解决方案

mysql字段过长无法作为约束、索引的解决方案

时间:2023-04-23 10:55:11浏览次数:41  
标签:url xxx 约束 索引 字段 key mysql id md5

背景:对接过程中遇到一个场景  需要用(网页链接+请求id)作为唯一约束, 由于url很长,我在一开始就设置为了text字段。

ALTER TABLE xxx.xxx ADD CONSTRAINT xxx UNIQUE KEY (xxxx);
在加约束时报错:

SQL 错误 [1170] [42000]: BLOB/TEXT column 'xxxx' used in key specification without a key length

 


查了一下资料,大概是text和超过varchar(255)的字段过长,不支持加约束和索引。
最后的解决方案,新增一个字段:(网页链接+请求id)做md5,作为唯一约束。
md5示例代码如下:

import hashlib

request_id = "12345"
url = 'http://filxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
uni_key = hashlib.new('md5', (str(request_id)+url).encode('utf-8')).hexdigest()

 

标签:url,xxx,约束,索引,字段,key,mysql,id,md5
From: https://www.cnblogs.com/jimmy996/p/17345838.html

相关文章

  • mysql单表备份部分数据且数据量较大时
    --复制表结构CREATETABLEtableB(LIKEtableA);--插入筛选数据INSERTintotableBSELECT*fromtableAwhereXXX=?;--重命名,替换renametabletableAtotableC;renametabletableBtotableA;--删除旧表DROPTABLEtableC;......
  • MySQL数据类型之字符型
    字符类型类型说明N的含义是否有字符集最大长度char(n)定长字符字符是255varchar(n)变长字符字符是65535binary(n)定长二进制字节字节否255varbinary(n)变长二进制字节字节否65535tinyblob二进制大对象字节否255blob(n)二进制大对象字节否65535mediumblob(n)二进制大对象字节否16Mlo......
  • InnoDB索引页结构
    InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差......
  • 【MySQL】InnoDB中的GAP锁详解
    测试数据:CREATETABLE`lock_test`(`a`int(11)NOTNULLAUTO_INCREMENT,`b`int(11)NOTNULL,`c`int(11)NOTNULL,`d`int(11)NOTNULL,PRIMARYKEY(`a`),UNIQUEKEY`idx_b`(`b`),KEY`idx_c`(`c`))ENGINE=InnoDBDEFAULTCHARSET=latin1;IN......
  • MySQL数据类型之日期型
    日期类型日期类型占用空间(字节数)表示范围date41000-01-01~9999-12-31datetime81000-01-0100:00:00.000000~9999-12-3123:59:59.999999timestamp41970-01-0100:00:00.000000UTC~2038-01-1903:14:07.000000UTCyear11901-2155time3-838:59:59.000000~838:59:59.000000date......
  • 通过反射获取进行字段赋值
    业务场景背景在以日期维度展示数据时,数据库中保存的数据一般会制作成宽表的形式比如:(id,projectNmae,projectID,indicator_name,indicator_value1,indicator_value1...,day)根据indicator_name获取对应指标,根据indicator_value获取对应周期数据,比如indicator_value1代表(da......
  • JSON字段基本操作
    CREATETABLE`t`(`id`INTUNSIGNEDNOTNULL,`js`JSONNOTNULL,PRIMARYKEY(`id`));{"num":1,"name":"abc","age":16,"newNum":123,"class":{......
  • 【IT老齐002】MySQL集群模式与应用场景
    【IT老齐002】MySQL集群模式与应用场景单库模式优点简单粗暴适合数据量干万以下小型应用企业网站,创业公司首选缺点不具备可用性与并发性读写分离集群模式读写分离中间件insert、update、delete负载均衡到从库select路由到主库MySQL主从复制binlog......
  • Mysql解决Authentication plugin ‘caching_sha2_password‘ cannot be loaded
    1、登录Mysqlmysql-uroot-p2、修改账户密码加密规则并更新用户密码//修改加密规则ALTERUSER'root'@'localhost'IDENTIFIEDBY'password'PASSWORDEXPIRENEVER;//更新一下用户的密码ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_pa......
  • archlinux安装配置MySQL8.x版本
    一:到官网下载Community版本的MySQL:https://dev.mysql.com/downloads/mysql/ 二:解压下载的mysql:xz-dmysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz先将.xz文件解压成tar文件,然后再用:tarxvfmysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar将.tar文件解压出来;......