下面的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个字符通常不同,所以此索引不会比使用列的全名创建的索引速度慢很多。
分享到:
相关推荐
max key length is 1000 bytes”。这个错误意味着你试图创建的索引键(key)超过了MySQL允许的最大长度。MySQL对每个表的每个索引都有一个最大长度限制,通常是1000字节。这个限制包括了所有被索引字段的长度。 在...
### MySQL建库时提示“Specified key was too long; max key length is 1000 bytes”的问题解析及解决方法 #### 问题背景 在使用MySQL进行数据库表结构设计时,可能会遇到“Specified key was too long; max key ...
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有引擎,有...
- 如果在安装过程中遇到“Specified key was too long: max key length is 767 bytes”的错误,需要修改`\Apache2.2\htdocs\bugfree\install\schema.php`文件中的相关字段长度。 通过以上步骤,你应该能够成功地在...
- **错误原因**:在导入前,可能会遇到“Specified key was too long; max key length is 1000 bytes”的错误。这是由于MySQL的限制导致的。 - **解决方法**: 1. 打开导出的SQL文件,查找并定位到以下两行: ``` ...
max key length is 767 bytes ``` 这个错误通常发生在创建或修改具有较大数据长度的索引时,尤其是在使用了InnoDB引擎的情况下。InnoDB存储引擎对索引的长度有限制,最大值为767字节。这个限制取决于MySQL的配置,...
由于MySQL对字符串类型的默认映射可能导致键长度超出限制,所以在定义`UserName`和`PassWord`时,需要使用`StringLength`和`MaxLength`数据注解来限制其长度,避免出现“Specified key was too long; max key length...
max key length is 767 bytes。这个错误通常发生在为字段创建索引时,特别是当MySQL版本低于5.7.7或MariaDB版本低于10.2.2时。因为Laravel默认使用utf8mb4编码,它支持的表情字符会消耗更多的字节,从而可能超过...
On production servers, 4096 bytes is a good setting for performance ; reasons. ; Note: Output buffering can also be controlled via Output Buffering Control ; functions. ; Possible Values: ; On = ...