mysql索引名太长怎么办
发布网友
发布时间:2022-05-02 15:10
我来回答
共3个回答
懂视网
时间:2022-05-02 19:32
大家看明白了吧,吧row_formatl类型修改为这两种模式。
下面是我做的过程图:
可以看到row_formatl类型,下面修改类型
CREATE TABLE test2
( id
int(11) NOT NULL AUTO_INCREMENT, date
varchar(25) DEFAULT NULL, sess_id
varchar(255) DEFAULT NULL, keyword
varchar(25) NOT NULL, url_n
varchar(3) DEFAULT NULL, s_n
varchar(3) DEFAULT NULL, select_url
varchar(255) DEFAULT NULL, UNIQUE KEY (id
,keyword
) ) ENGINE=innodb DEFAULT row_format=dynamic;
ok,了这就可以插入超过767字节的索引了,怎么样,没看明白?那就对了,只有自己做过才能看懂这图片中代表的都是什么意思。加油吧。
修改Mysql索引长度限制
标签:情况 数据库表 int 最大 默认值 log ble shadow 链表
热心网友
时间:2022-05-02 16:40
1. 数据库版本:阿里云RDS MySQL5.1
mysql> select @@version;
+-------------------------------+
| @@version |
+-------------------------------+
| 5.1.61-Alibaba-rds-201404-log |
+-------------------------------+
1 row in set (0.00 sec)
2. 测试的表结构信息
mysql> show create table tb2\G
*************************** 1. row ***************************
Table: tb2
Create Table: CREATE TABLE `tb2` (
`a` varchar(255) DEFAULT NULL,
`b` varchar(255) DEFAULT NULL,
`c` varchar(255) DEFAULT NULL,
`d` varchar(1000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
3. 测试加索引
(1)添加单列索引,能够添加成功(报出warning),但实际添加的是前缀索引。
mysql> alter table tb2 add index idx1 (d);
Query OK, 0 rows affected, 2 warnings (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show warnings;
+---------+------+----------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------+
| Warning | 1071 | Specified key was too long; max key length is 1000 bytes |
| Warning | 1071 | Specified key was too long; max key length is 1000 bytes |
+---------+------+----------------------------------------------------------+
2 rows in set (0.00 sec)
表结构信息:
mysql> show create table tb2\G
*************************** 1. row ***************************
Table: tb2
Create Table: CREATE TABLE `tb2` (
`a` varchar(255) DEFAULT NULL,
`b` varchar(255) DEFAULT NULL,
`c` varchar(255) DEFAULT NULL,
`d` varchar(1000) DEFAULT NULL,
KEY `idx1` (`d`(333))
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
(2)添加组合索引,会执行失败。
mysql> alter table tb2 add index idx1 (a,b);
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
4. 分析
myisam存储引擎在创建索引的时候,索引键长度是有一个较为严格的长度*的,所有索引键最大长度总和不能超过1000,而且不是实际数据长度的总和,而是索引键字段定义长度的总和。
主要字符集的计算方式:
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
热心网友
时间:2022-05-02 17:58
模糊查询 like