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 的错误发生。