下面的SQL语句
CREATE TABLE subscription (
subscriptionid varchar(767) NOT NULL PRIMARY KEY,
params blob,
dest varchar(1023),
sched blob,
trigg varchar(1023),
initialrecordingtime timestamp,
exportifempty boolean,
queryname varchar(1023),
lastexecuted timestamp
);
即便是改为
CREATE TABLE subscription (
subscriptionid varchar(767) NOT NULL PRIMARY KEY,
params blob,
dest varchar(767),
sched blob,
trigg varchar(767),
initialrecordingtime timestamp,
exportifempty boolean,
queryname varchar(767),
lastexecuted timestamp
);
依然是这个错误!!
将mysql数据库脚本中的unique index字段从原来的varchar(256)改成varchar(1024),再次执行报错:
ERROR 1071 (42000) at line 482 in file: 'db/sm1.sql': Specified key was too long; max key length is 767 bytes
以前写过一篇文章,也是关于这个问题的
www.acmerblog.com
在该文中,我经过试验,发现如果将varchar类型的unique index/key设置成最大383,就不会出现问题了。
其实这个问题还有一个解,那就是指定索引的长度:
对于CHAR和VARCHAR列,只用一列的一部分就可创建索引。创建索引时,使用col_name(length)语法,对前缀编制索引。前缀包括每列值的前length个字符。BLOB和TEXT列也可以编制索引,但是必须给出前缀长度。
那么在不改变字段长度的情况下,通过指定索引长度为一个较小的值,就可以避免出现这个问题了。
UNIQUE INDEX (content(32)),
又如,
此处展示的语句用于创建一个索引,索引使用列名称的前10个字符。
CREATE INDEX part_of_name ON customer (name(10));
因为多数名称的前10个字符通常不同,所以此索引不会比使用列的全名创建的索引速度慢很多。
分享到:
相关推荐
今天在为数据库中的某两个字段设置unique索引的时候,出现了Specified key was too long; max key length is 1000 bytes错误
本文将详细提供mysql建库时提示Specified key was too long max key length is 1000 bytes的问题的解决方法,有需求的朋友可以参考
今天在执行laravel migrate时出现异常,找了好半天才找到问题所在,所以这篇文章主要给大家介绍了关于Laravel 5.4中migrate报错: Specified key was too long error的解决方法,需要的朋友可以参考下。
调整参数后引起,ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 3 2768M 的解决方案
nacos-server-1.1.4 windows下的运行程序 springcloud alibaba
13.1. 数据定义语句 13.1.1. ALTER DATABASE语法 13.1.2. ALTER TABLE语法 13.1.3. CREATE DATABASE语法 13.1.4. CREATE INDEX语法 13.1.5. CREATE TABLE语法 13.1.6. DROP DATABASE语法 ...
ALTER TABLE table1 ALTER COLUMN ... 您可能感兴趣的文章:sql server建库、建表、建约束技巧mysql建库时提示Specified key was too long max key length is 1000 bytes的问题的解决方法Mysql 建库建表技巧分享SQL S
max key length is 767 bytes 解决方案1: 直接缩短到255长度 解决方案2: 修改数据库配置, set innodb_large_prefix=on 吐槽一下, 1.2.0版本比1.1.4版本多创建一个数据表, 为甚么前面的sql有引擎,有...
Illuminate\Database\QueryException : ... max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`)) 以上报错是因为你的数据库版本低于当前laravel要求,larave
今天小编就为大家分享一篇关于Mysql:The user specified as a definer ('xxx@'%') does not exist的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
IllegalStateException: The specified child already has a parent.我的博客中有文章讲解
今天项目优化过程中,mysql有个问题The user specified as a definer (‘wx_root’@’%’) does not exist 查了一下,意思是执行sql无权限。 看了下数据库用户是quoters 而sql没有所属权。那就找原因了。发现sql执行...
解决Mysql Error-The user specified as a definer (‘mysql.infoschema’@’localhost’) does not exist
修改源码后的jar包 解决:The signing key's size is 1024 bits which is not secure enough for the RS256 algorithm.
TC_QDisc 模拟网络丢包、延时、重复、损坏TC_QDisc 模拟网络丢包、延时、重复、损坏TC_QDisc 模拟网络丢包、延时、重复、损坏
Oracle10G控制台解决办法-Io 异常:Unknown host specified解决方法
mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法