Mysql
 sql >> Datenbank >  >> RDS >> Mysql

kann den Fremdschlüssel nicht löschen

Die beschriebene Lösung hier von Chris White hat bei mir funktioniert.

Das Grundproblem besteht darin, dass MySQL sowohl einen Index als auch einen Fremdschlüssel erstellt. Beide müssen entfernt werden (der Fremdschlüssel zuerst im Gegensatz zu dem, was Chris gesagt hat).

  1. show create table tabellenname;

    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. Löschen Sie die Fremdschlüsseleinschränkung:

    ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;
    
  3. Löschen Sie den Schlüssel

    ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;
    

Das hat es für mich getan.