Mysql
 sql >> Base de données >  >> RDS >> Mysql

impossible de déposer la clé étrangère

La solution décrite ici par Chris White travaillé pour moi.

Le problème fondamental est que MySQL crée à la fois un index et une clé étrangère. Les deux doivent être supprimés (la clé étrangère en premier contrairement à ce que Chris a dit).

  1. afficher créer table nom_table ;

    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. Supprimez la contrainte de clé étrangère :

    ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;
    
  3. Supprimer la clé

    ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;
    

Cela l'a fait pour moi.