7

ColumnName は一意です ( UNIQUE KEY ColumnName)。

列を一意にしないようにしたいだけです(非常に単純でなければなりませんが、その方法がわかりません)。

phpMyAdmin で列名を確認し、下部にある [一意のアイコン] をクリックすると、#1062 - Duplicate entry '' for key 'RegistrationNumber'. OK、アイコンをクリックしてそれを見てくださいADD UNIQUE

行内の構造にユニークなアイコンがあります。ただし、アイコンはクリックできません。

phpMyAdminのように、クエリを試して、それを行う方法が見つかりませんでした。

試したアドバイスに基づいていALTER TABLE TableName DROP INDEX ColumnNameます。

得る1091 Can't DROP 'ColumnName'; check that column/key exists

ここでhttps://stackoverflow.com/a/4414694/2465936が見つかりましたThis error means that you are trying to delete a key which is being used by another table.おそらく ColumnName は別のテーブルで使用されています。

列を一意にしないために何をする必要があるかアドバイスしてください。

SHOW CREATE TABLEゲットで

Array
(
[0] => Array
    (
        [Table] => 18_6_TransactionPartners
        [Create Table] => CREATE TABLE `18_6_TransactionPartners` (
       `Number` int(11) NOT NULL AUTO_INCREMENT,
       `CompanyName` char(255) COLLATE utf8_unicode_ci NOT NULL,
       `RegistrationNumber` char(255) COLLATE utf8_unicode_ci NOT NULL,
        .......
        PRIMARY KEY (`Number`),
        UNIQUE KEY `Number_2` (`Number`),
        UNIQUE KEY `CompanyName` (`CompanyName`,`RegistrationNumber`),
        KEY `Number` (`Number`)
        ) ENGINE=InnoDB AUTO_INCREMENT=444 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
    )

 )

アップデート

@Bart Friederichs のアドバイスに基づいて、一意ではないALTER TABLE 18_6_TransactionPartners DROP INDEX Number列を試して変更しました。RegistrationNumber理由がわかりません(一意のキーが混乱している可能性があります)。いずれにせよ、一意ではないものに変更できます。

4

3 に答える 3

7

おそらくあなたは という名前を持っていますINDEX。を使用SHOW CREATE TABLE tblすると、インデックスの名前を見つけることができます。次に、それらを名前でドロップします(たとえば、テストテーブル):

mysql> SHOW CREATE TABLE test;
CREATE TABLE `test` (
  `entry_id` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  UNIQUE KEY `k` (`entry_id`)
)

インデックスを削除するには、次を使用します。

ALTER TABLE test DROP INDEX k;

キーの名前は次のとおりですRegistrationNumber(エラー メッセージに示されているとおり):

ALTER TABLE TableName DROP INDEX RegistrationNumber;
于 2013-08-09T07:44:38.163 に答える
2

UNIQUE 句を使用して列が一意に定義されている場合は、次のようなことができます。

ALTER TABLE mytable DROP INDEX constraint_name

インデックスを削除するには、次のようにします:-

ALTER TABLE mytable DROP INDEX index_name;
于 2013-08-09T07:39:18.763 に答える
0

列名ではなく、インデックス名を使用してインデックスを削除する必要があります。

于 2013-08-09T07:39:26.450 に答える