0

Web ページ上のアイテムの並べ替え順序を制御するために使用される小さなテーブルが 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
4

1 に答える 1

0

問題は、'order' が SQL の予約語であることです。ドロップしたい場合は、

ALTER TABLE menus_types DROP INDEX `order`

基礎となるフレームワークによっては、多くの問題が発生する可能性があるため、列の名前を変更することをお勧めします。

于 2013-08-09T16:08:42.030 に答える