Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

incapaz de descartar a chave estrangeira


A solução descrita aqui por Chris White trabalhou para mim.

A raiz do problema é que o MySQL cria tanto um índice quanto uma chave estrangeira. Ambos devem ser removidos (a chave estrangeira primeiro, ao contrário do que Chris disse).

  1. show cria tabela table_name;
    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. Exclua a restrição de chave estrangeira:
    ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;
    

  3. Excluir a chave
    ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;
    

Isso fez isso por mim.