2013-08-09 10 views
6

ColumnName è univoco (UNIQUE KEY ColumnName).MySQL deve rendere la colonna NOT UNICA. Errore Can not DROP 'ColumnName'; verificare che la colonna/chiave esista

Voglio solo rendere la colonna non unica (deve essere molto semplice, ma non può capire come).

Se in phpMyAdmin controllare il nome della colonna e in basso fare clic sull'icona Univoca, ottenere #1062 - Duplicate entry '' for key 'RegistrationNumber'. OK, vedi perché, cliccando sull'icona è ADD UNIQUE.

C'è un'icona Unica in Struttura all'interno di una riga. Ma l'icona non è cliccabile.

Come in phpMyAdmin non ha trovato il modo di farlo, provando con la query.

Sulla base dei suggerimenti provato ALTER TABLE TableName DROP INDEX ColumnName.

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

Qui https://stackoverflow.com/a/4414694/2465936 trovato This error means that you are trying to delete a key which is being used by another table. Forse il ColumnName è utilizzato da un altro tavolo.

Si prega di sapere cosa bisogna fare per rendere la colonna non unica.

Con SHOW CREATE TABLE ottenere

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 
    ) 

) 

Aggiornamento

Sulla base dei pareri @Bart Friederichs provato ALTER TABLE 18_6_TransactionPartners DROP INDEX Number e ha cambiato colonna RegistrationNumber non non unico. Non capisco perché (forse ha avuto un pasticcio con le chiavi univoche). In ogni caso può cambiare a non unico.

+1

Si rilascia un indice in base al nome, non in base al nome della colonna (gli indici possono avere più colonne) –

+0

Si desidera eliminare la colonna o l'indice? Lo sql che fornisci non è valido. – JScoobyCed

+1

Potresti 'DESCRIVERE la tabella'? –

risposta

6

Probabilmente si dispone di un nome INDEX. Utilizzando SHOW CREATE TABLE tbl è possibile trovare i nomi degli indici. Poi rilasciarli per nome (ad esempio, un po 'di tabella di test):

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`) 
) 

Per eliminare l'indice, utilizzare questo:

ALTER TABLE test DROP INDEX k; 

tuo nome chiave è RegistrationNumber (come è detto dal messaggio di errore):

ALTER TABLE TableName DROP INDEX RegistrationNumber; 
+0

Invece di' UNIQUE KEY 'k' (' entry_id') 'ha' UNIQUE KEY CompanyName (CompanyName, RegistrationNumber) '. Provato 'ALTER TABLE 18_6_TransactionPartners DROP INDEX CompanyName'. Ottieni '1091 Can not DROP 'CompanyName'; controlla che la colonna/chiave esista' – user2465936

+0

Se hai ottenuto 'Can not DROP 'CompanyName'; controlla che la colonna/chiave esista', quindi probabilmente hai tentato di eliminare l'indice due volte. La prima volta che ci è riuscito, il secondo ti ha dato questo messaggio. –

+0

Ho copiato e incollato sia 'CREATE TABLE' che' ALTER TABLE 'e funziona perfettamente. –

2

Se la colonna è stata definita unica con clausola UNIQUE, allora si può fare qualcosa di simile:

ALTER TABLE mytable DROP INDEX constraint_name 

Per far cadere l'indice di fare questo: -

ALTER TABLE mytable DROP INDEX index_name; 
0

È necessario eliminare l'indice utilizzando il nome dell'indice, non il nome della colonna.

Problemi correlati