sql >> Database >  >> RDS >> Mysql

kan de externe sleutel niet laten vallen

De oplossing die hier door Chris White wordt beschreven werkte voor mij.

Het hoofdprobleem is dat MySQL zowel een index als een externe sleutel maakt. Beide moeten worden verwijderd (eerst de externe sleutel in tegenstelling tot wat Chris zei).

  1. toon tabel aanmaken 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. Verwijder de externe sleutelbeperking:

    ALTER TABLE table_name DROP FOREIGN KEY `table_name_ibfk_1`;
    
  3. Verwijder de sleutel

    ALTER TABLE table_name DROP KEY `column_tablein_26440ee6`;
    

Dat deed het voor mij.



  1. SQLiteDatabase Cursor alleen leeg op Android 5.0+ apparaten

  2. Hoe de CASE-verklaring in MySQL te gebruiken?

  3. UTF-8-tekens detecteren in een Latin1-gecodeerde kolom - MySQL

  4. Zoekopdracht op volgorde van de laatste drie tekens van een kolom