MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法

MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法

经过查询才知道,是Mysql的字段设置的太长了,于是我把这两个字段的长度改了一下就好了。 

建立索引时,数据库计算key的长度是累加所有Index用到的字段的char长度后再按下面比例乘起来不能超过限定的key长度1000: 
latin1 = 1 byte = 1 character 
uft8 = 3 byte = 1 character 
gbk = 2 byte = 1 character 
举例能看得更明白些,以GBK为例: 
CREATE UNIQUE INDEX `unique_record` ON reports (`report_name`, `report_client`, `report_city`); 
其中report_name varchar(200), report_client varchar(200), report_city varchar(200) 
(200 + 200 +200) * 2 = 1200 > 1000,所有就会报1071错误,只要将report_city改为varchar(100)那么索引就能成功建立。 
如果表是UTF8字符集,那索引还是建立不了。

时间: 2024-11-08 18:35:49

MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法的相关文章

MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法_Mysql

经过查询才知道,是Mysql的字段设置的太长了,于是我把这两个字段的长度改了一下就好了. 建立索引时,数据库计算key的长度是累加所有Index用到的字段的char长度后再按下面比例乘起来不能超过限定的key长度1000: latin1 = 1 byte = 1 character uft8 = 3 byte = 1 character gbk = 2 byte = 1 character 举例能看得更明白些,以GBK为例: CREATE UNIQUE INDEX `unique_record`

Mysql/MariaDB启动时处于进度条状态导致启动失败的原因及解决办法_mariadb

今天打开网站突然发现网站无法打开,后来通过SSH登陆服务器发现MARIADB数据库没有启动成功,再次启动还是无法成功启动,一直处于启动进度条,进度条结束后提示ERROR.查看日志出现以下错误: InnoDB: Unable to lock ./ibdata1, error: 11 后经调试发现是因为MariaDB数据库所在分区已经满了,造成无法启动. 只有将MariaDB数据库存放数据目录移动到另外一个磁盘份额比较大的分区或者将当前分配删除一些不必要的文件. 移动办法: 1.停掉mysql服务器

connect-ios地图定位时出现这个错误,之前还能用,请各位大牛帮忙提供一下解决办法

问题描述 ios地图定位时出现这个错误,之前还能用,请各位大牛帮忙提供一下解决办法 PBRequester failed with Error Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo=0x7f93be943480 {NSUnderlyingError=0x7f93bea16b10 "Could not connect to the server.&

启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法

原文:启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法 一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.

mysql建库时提示Specified key was too long max key length is 1000 bytes的问题的解决方法_Mysql

索引字段长度太长, 1.修改字段长度 2.修改mysql默认的存储引擎 在/etc/mysql/my.cnf 的[mysqld] 下面加入default-storage-engine=INNODB 但是在建库时已经明确表明了需要使用INNODB引擎 Sql代码 复制代码 代码如下: CREATE TABLE `acs` ( ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 检查当前的引擎 复制代码 代码如下: mysql> show engines; 果然没有I

codefirst创建MySQL数据库报错: Specified key was too long; max key length i

问题描述 使用codefirst创建MySQL数据库,虽然数据库创建好了,但是报错:Specifiedkeywastoolong;maxkeylengthis767bytes.检查表的字段设置,没有很长的,我甚至只设置一个int型的字段,还是报错,请求帮助啊 解决方案 解决方案二:分数不多了,请大家帮帮忙

编译器错误信息:CS0016:未能写入输出文件 c:\WINDOWS\Microsoft.NET\Framework\...的解决办法

今天在向服务器部署一个fluorineFx web应用时,浏览站点总出现这个错误,用aspnet_regiis.exe -i注册,把c:\windows\temp,c:\windows\tmp,C:\Windows\Microsoft.NET\Framework\vxxx.xxx\Temporary ASP.NET Files 这三个目录的Network Serivce权限调到最高也不行,极度郁闷   无意间看了下系统的属性,发现环境变量中,服务器管理员把临时目录设置到了一个其它位置 E:\te

"HTTP 错误 401.1 - 未经授权:访问由于凭据无效被拒绝" 的解决办法

为了系统安全,给另外一个的网站建立了两个单独用户:首先,我们需要用到以下的组:     IIS_WPG 组(也称为 IIS 工作进程组,IIS Worker Process Group)     Guests组 (来宾组,在系统中拥有最少的权限) 以及以下的帐号:     Internet 来宾帐户 (匿名访问 Internet 信息服务的内置帐户)     启动 IIS 进程帐户 (用于启动进程外应用程序的 Internet 信息服务的内置帐户) 1)新建用户a_iusr 属于guests组,

在安装openshift的rhc后 输入rhc setup的命令出现下面的错误求大神帮下忙!!说下是什么原因或者解决办法

问题描述 C:Userswenxudong>rhcsetupC:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require':cannotloadsuchfile--dl/import(LoadError)fromC:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require'fromC:/Ruby22-x64