4

CentOs 5 で mysql-server-5.0.45-7.el5 を使用しています。

私のデータベースには、いつMULキーが作成されたのかわかりません(データベースはグループの制御下で共有されています)、いくつかの値を挿入しようとすると、次のようなエラーが表示されますその上:

Duplicate entry '2-1-2004-09-11 13:13:41.526' for key 2:INSERT INTO ephemeris SET
EPH_TYPE_ID = 1, FILENAME = 'CBERS_2_CCD1_DRD_2004_09_11.13_13_23', ID = 0, 
IS_NEW = 1, SATELLITE_ID = 2, TIME = '2004-09-11 13:13:41.526'

一度このエラーが出て、試しALTER TABLE ephemeris DROP INDEX SATELLITE_ID; てみましたが、最初はうまくいきましたが、同じ制約が現れてまったくうまくいきませんでした。

テーブルの構造(再開):

mysql> show columns from ephemeris;

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| ID           | int(11)      | NO   | PRI | NULL    | auto_increment |
| SATELLITE_ID | int(11)      | NO   | MUL | 0       |                |
| EPH_TYPE_ID  | int(11)      | NO   |     | 0       |                |

コマンドを入力するALTER TABLEと、mysql は次のように返します。

mysql> ALTER TABLE ephemeris DROP INDEX ephemeris.SATELLITE_ID ;
ERROR 1091 (42000): Can't DROP 'SATELLITE_ID'; check that column/key exists

誰かがすでにこのエラーを受けていますか? 何か助けはありますか?

Rgds。

4

1 に答える 1

5

最初に外部キー制約を削除してから、インデックスを削除する必要があります。

mysql> show create table a;

| CREATE TABLE `a` (
`id` varchar(20) DEFAULT NULL,
`sal` int(20) DEFAULT NULL,
`b_id` varchar(20) DEFAULT NULL,
KEY `b_id` (`b_id`),
CONSTRAINT `a_ibfk_1` FOREIGN KEY (`b_id`) REFERENCES `b` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

mysql> alter table a drop foreign key `a_ibfk_1`;
Query OK, 0 rows affected (0.10 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table a drop index `b_id`;
Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0
于 2015-12-20T05:18:44.143 に答える