列不会删除唯一约束

时间:2013-08-09 15:55:22

标签: mysql

我在MySQL中有一个小表,用于控制网页上项目的排序顺序。

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `type` text NOT NULL,

  `live` text NOT NULL,

  `order` int(11) NOT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `id` (`id`)

如上所述, order 列不应该是唯一的,但是在phpMySQLadmin中它显示为唯一的,甚至当我认为我删除了行时,当我使用以下任一项搜索时只有5个条目,它返回一个类似'23'的值,它似乎是一个自动增量值:

SELECT * FROM menus_types ORDER BY `order` DESC LIMIT 1

SELECT MAX( `order` ) FROM menus_types

我尝试使用SQL来获取索引名称,使用SHOW INDEX FROM menus_types但仅返回id列上的索引。

如果我按照“sql DROP CONSTRAINT UNIQUE not working”详细说明ALTER TABLE menus_types DROP INDEX 'unique'ALTER TABLE menus_types DROP INDEX order,那么我会收到语法警告。

我需要能够添加删除和编辑order列并提供可预测结果的任何建议吗?

按要求编辑

    CREATE TABLE `menus_types` 

(  `id` int(11) NOT NULL AUTO_INCREMENT,  

`type` text NOT NULL,  

`live` text NOT NULL,  

`order` int(11) NOT NULL,  

PRIMARY KEY (`id`),  

UNIQUE KEY `id` (`id`)) 

ENGINE=MyISAM 

AUTO_INCREMENT=9 

DEFAULT CHARSET=latin1

1 个答案:

答案 0 :(得分:0)

问题是'order'是SQL中的保留字。如果要删除它,请使用

ALTER TABLE menus_types DROP INDEX `order`

我建议你重命名列的名称,因为它可能会造成很多麻烦,具体取决于你的底层框架。