2 yamemory YaMemory 于 2016.01.19 20:03 提问

MySQL中在创建表的时候创建组合索引,为什么我加了索引长度后就提示错误呢?

这是在创建表的同时创建了组合索引,并且添加了索引长度100,然后提示
ERROR 1089 (HY000): Incorrect prefix key; the used key part isn't a string, the
used length is longer than the key part, or the storage engine doesn't support u
nique prefix keys。图片说明
然后我重新创建数据表,同时将索引长度100去掉,结果便可以了,如图:图片说明

3个回答

u013129324
u013129324   2016.01.19 20:37
已采纳

你的age不是int的么 又不是字符串。。。

u013129324
u013129324 回复YaMemory: 是的 只有字符串才有prefix index,数值型的索引都是按自身格式长度的
2 年多之前 回复
YaMemory
YaMemory 我把100放在了name的后面,结果输出正确了。。。但我想问一下只有字符串才能定义索引长度吗?难道整数和浮点数类型不能定义索引长度?
2 年多之前 回复
91program
91program   Ds   Rxr 2016.01.19 20:20

age 的数据类型,是不是与长度 100 不匹配?按错误的意思来说,是这个。
但具体的情况,需要根据实现字段类型来判断。

Evankaka
Evankaka   Ds   Rxr 2016.01.19 20:55

INT最多应该 是11位吧,试试把100改成11.如果不行。那就是不能这样写了,反正笔者的参与的项目还没见过这样写的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MySQL创建表的时候创建索引
要想使用索引提高数据表的访问速度,首先,需要创建一个索引,创建索引的方式,有三种。创建表的时候,创建索引这种方式最简单、方便,语法格式 CREATE TABLE 表名(字段名 数据类型[完整性约束条件], 字段名 数据类型 [完整性约束条件], …… 字段名 数据类型 [UNIQUE | FULLTEXT |SPATIAL] INDEX | KEY [别名](字段名1 [(长度)])[AS
MySQL创建复合索引
在MySQL数据库中,创建复合索引的时候,不知道在创建过程中哪个列在前面,哪个列该在后面,用以下方式即可: select count(distinct first_name)/count(*) as first_name_selectivity, count(distinct last_name)/count(*) as last_name_selectivity, count(*) fr
MySQL创建表时遇到的几个错误
MySQL创建表时遇到的几个错误 sql   mysql   niceforbear 2016年02月29日发布 赞  |   0 收藏  |  1 2.2k 次浏览 Q1 创建表时的表结构如下: CREATE TABLE `hack` ( `Id` bigint(11) unsigne
MySQL单列索引和组合索引的创建及区别介绍
MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习。   为了形象地对比两者,再建一个表: CREATE TABLE myIndex (  i_testID INT NOT NULL AUTO_INCREMENT,  vc_Name VAR
mysql建立不上外键,sql语句一运行完就会生成一条索引,但是外键却建不上
案例:使用navicat生成外键关联,发现添加不了,只生成了一条索引 分析: 建立外键需要注意几点: 1,必须使用innodb表引擎 2,两个表的字符编码必须一致 3,被引用的typeid,即父表中的typeid必须是主键或者唯一建 满足以上几点,sql如下: -------------------------------- create table father (typei
Mysql之如何建立索引以及组合索引
数据库中为何要建立索引? 这个问题对于做做简单实验的学生来说似乎并不需要过于了解,但是,如果处理的数据达到百万以及以上的时候,合适的索引就能够体现出很强大的优势 全文索引 B+树索引 Hash索引 创建索引的三种方式:三种方式: 1. CREATE INDEX index_name ON table_name (column_name). 2. ALTER TABLE ADD index inde
MySql 创建索引原则
为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。本小节将向读者介绍一些索引的设计原则。   1.选择唯一性索引   唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。   2.为经常需要排序
mysql数据库创建表出错误
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Group( GId int ,GCName varchar(20),GCSex varc
mysql建立组合索引原则
现实中,mysql可以根据业务需要建立组合索引,由于mysql使用B-Tree格式索引,可以直接定位记录,无需扫描。mysql建立多列索引有最左前缀的原则,即最左优先,如: 如果有一个2列的索引(col1,col2),则已经对(col1)、(col1,col2)上建立了索引; 如果有一个3列索引(col1,col2,col3),则已经对(col1)、(col1,col2)和(col1,co
MySQL组合索引的注意点
经常使用MySQL组合索引,也经常发现,其实匹配程度并不高,尤其是条件组合非常多的时候。 其实使用组合索引有这些注意点的: 比如这个索引 key(last_name, first_name, dob) 如果想使用索引,你必须保证按索引的最左边前缀(leftmost prefix of the index)来进行查询。 (1)匹配全值(Match the full value):对索引中