MySQL Error number: 4132; Symbol: ER_INDEX_OTHER_THAN_PK; SQLSTATE: HY000

文档解释

Error number: 4132; Symbol: ER_INDEX_OTHER_THAN_PK; SQLSTATE: HY000

Message: Table ‘%s’ has indexes other than primary key.

错误说明:

ER_INDEX_OTHER_THAN_PK 错误代号4132是 MySQL 数据库管理系统中的一个通用性错误,该错误就是发生了不允许的索引操作,通常是指表中只允许有一个主键的索引(也就是主键索引),但用户却添加了另外一个其他索引(任何其他非主键索引)。

常见案例

ER_INDEX_OTHER_THAN_PK错误一般发生在你试图创建一个表时,由于你创建了两个或多个不同类型的索引,而MySQL会拒绝这样的表。举个例子,Melissa 想创建一个表 “customers”,其中有一个主键(主键是 customer_id) 但是她还创建了另外一个索引,名为first_name 索引,这样MySQL数据库会报出 ER_INDEX_OTHER_THAN_PK 错误信息。

解决方法:

ER_INDEX_OTHER_THAN_PK 错误的解决方法很简单,只要删除多余的索引即可,保留主键索引即可。另外,也可以用ALTER TABLE语句来删除索引,如:ALTER TABLE customers DROP INDEX first_name; 将会删除名为first_name的索引,保留主键索引 customer_id。

此外, 如果在创建表之前未添加任何索引,则可以在创建表时使用以下SQL语句:

CREATE TABLE customers (

customer_id INTEGER PRIMARY KEY,

first_name VARCHAR(20)

);

这句话的意思就是声明customer_id字段是主键索引,如果你想创建其他索引,也可以在创建表的同时添加,比如说我们需要声明first_name字段被索引,则可以使用下面这句:

CREATE TABLE customers (

customer_id INTEGER PRIMARY KEY,

first_name VARCHAR(20),

INDEX first_name (first_name)

)

以上都可以避免ER_INDEX_OTHER_THAN_PK 的错误发生。

你可能感兴趣的