mysql error 1071: 创建唯一索引时字段长度限制的问题
作者:孤独王者¥ 发布时间:2024-01-12 16:32:20
标签:mysql,error,1071,唯一,索引
一、先描述一下问题吧
如下创建表时候报错了
CREATE TABLE `xxx` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`sys_code` varchar(255) DEFAULT NULL COMMENT '系统编码',
`module_name` varchar(1000) DEFAULT NULL COMMENT '模块名',
`call_num` bigint(20) DEFAULT NULL COMMENT '调用次数',
`cost_dis` varchar(50) DEFAULT NULL COMMENT '耗时分布',
`date_time` varchar(50) DEFAULT NULL COMMENT '日期时间',
PRIMARY KEY (`id`),
UNIQUE KEY `sys_code` (`sys_code`, `module_name`, `cost_dis`, `date_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4
> 1071 - Specified key was too long; max key length is 3072 bytes
> 时间: 0s
二、显而易见
提示就是长度太长超过了mysql的最大配置。
三、问题和解决方案分析
1、首先考虑是否有方法将mysql这个长度限制调大
查了一下,如下操作:
(1)set global innodb_large_prefix=1;
mysql> show variables like 'innodb_large_prefix';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| innodb_large_prefix | ON |
+---------------------+-------+
1 row in set (0.00 sec)
(2)set global innodb_file_format=BARRACUDA;
mysql> show variables like 'innodb_file_format';
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| innodb_file_format | Barracuda |
+--------------------+-----------+
1 row in set (0.00 sec)
如果已经设置,还是创建不成功,只能考虑方案二
2、一般来说,唯一索引长度不应该太长
因为mysql会根据这个唯一索引做了一系列的操作,所以
(1)重新审核需求看看这样的唯一索引是否合理,看看能不能减少字段
(2)实在是不行,只能根据具体情况,将字段的长度调整小
比如,上面的例子就是没办法减少字段的,但是我又一定要建立唯一索引,最终,我选择了调整字段长度,将module_name的长度减少到了255,再次创建表,已成功。
来源:https://blog.csdn.net/qq_30966497/article/details/96316360
0
投稿
猜你喜欢
- 本文实例讲述了Python简单生成8位随机密码的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env python# -*-
- 本文实例讲述了Python实现随机创建电话号码的方法。分享给大家供大家参考,具体如下:当需要随机的生成一些电话号码的时候,可以使用以下脚本,
- 做一个简单的小实例:目录结构如下:demo1.pyclass MyClass():def __init__(self,x,y):  
- 本文详细讲述了CI框架整合smarty步骤。分享给大家供大家参考,具体如下:Ci结合smarty的配置步骤:1. 第一步配置ci和下载sma
- python代码运行助手是能在网页上运行python语言的工具。因为python的运行环境在很多教程里都是用dos的,黑乎乎的界面看的有点简
- Oracle的Nvl函数nvl( ) 函数从两个表达式返回一个非null 值。语法NVL(eExpression1, eExpression
- 当Django的内置权限无法满足需求的时候就自己扩展吧~背景介绍overmind项目使用了Django内置的权限系统,Django内置权限系
- 常见的误解有: 1. 只用 ado.net ,无法进行动态 SQL 拼接。 2. 有几个动态参数,代码的重复量就成了这些参数的不同数量的组合
- 一、前言大家好,今天我来介绍我接一个Python单子。我完成这个单子前后不到2小时。首先我接到这个单子的想法是处理Excel表,在两个表之间
- Python字符串的format函数format()函数用来收集其后的位置参数和关键字段参数,并用他们的值填充字符串中的占位符。通常格式如下
- 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤。通过端口扫描我们可以了解到目标主机都开
- 如下所示:matrix.py#!/usr/bin/python# -*- encoding:UTF-8-*-import pprintimp
- 认为整理的还比较详细的,亲们,就快点收藏起来吧!PHP系统类函数assert函数:检查assertion声明是否错误extension_lo
- 一、享元模式享元,可理解为 Python 中的元类、最小粒度的类,系统中存在大量的相似对象时,可以选择享元模式提高资源利用率。享元具有两种状
- ①GET# -*- coding:utf-8 -*-import requestsdef get(url, datas=None): &nb
- 如下所示:try: f =open("D:/1.txt",'r') f.clos
- 引言:之前博文介绍过了mysql/oracle与ES之间的同步机制。而logstash最初始的日志同步功能还没有介绍。本文就logstash
- python这款软件是很多程序员都会使用到的编程软件,利用python大家可以快速的编写代码,同时代码运行速度也是非常快的。在python中
- 数据库技术是计算机科学中发展最快的领域之一,数据库的诞生和发展给计算机信息管理带来了一场巨大的革命。数据库的诞生和发展给计算机信息管理带来了
- 1、将css与javascript全部用下边的方法分离到外部文件中去。<link rel="stylesheet"