Mysql
 sql >> Database >  >> RDS >> Mysql

impossibile eliminare la chiave esterna

La soluzione descritta qui da Chris White ha funzionato per me.

Il problema principale è che MySQL crea sia un indice che una chiave esterna. Entrambi devono essere rimossi (la chiave esterna prima contrariamente a quanto detto da Chris).

  1. mostra crea tabella nome_tabella;

    SHOW CREATE TABLE `table_name`:
    
    | table_name | CREATE TABLE `table_name` (
      `id` int(20) unsigned NOT NULL auto_increment,
      `key_column` smallint(5) unsigned default '1',
      KEY `column_tablein_26440ee6` (`key_column`),  <--- shows key name
      CONSTRAINT `table_name_ibfk_1` FOREIGN KEY (`key_column`) REFERENCES <--- shows foreign key constraint name
    `second_table` (`id`) ON DELETE SET NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    
  2. Elimina il vincolo di chiave esterna:

    ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;
    
  3. Elimina la chiave

    ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;
    

Che ha fatto per me.