sql >> Databasteknik >  >> RDS >> Mysql

MySQL SLIPPA alla tabeller, ignorera främmande nycklar

Jag tyckte att den genererade uppsättningen drop-satser var användbara och rekommenderar dessa justeringar:

  1. Begränsa de genererade dropparna till din databas så här:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';

Obs 1:Detta exekverar inte DROP-satserna, det ger dig bara en lista över dem. Du måste klippa ut och klistra in utdata i din SQL-motor för att köra dem.

Obs 2:Om du har VIEWS måste du korrigera varje DROP TABLE `VIEW_NAME` uttalande till DROP VIEW `VIEW_NAME` manuellt.

  1. Obs, enligt http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , att släppa med kaskad är meningslöst / missvisande:

Därför, för att drop-satserna ska fungera om du behöver:

SET FOREIGN_KEY_CHECKS = 0

Detta kommer att inaktivera referensintegritetskontroller - så när du är klar med att utföra de droppar du behöver, vill du återställa nyckelkontroll med

SET FOREIGN_KEY_CHECKS = 1
  1. Den slutliga körningen ska se ut så här:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;

OBS:för att använda utdata från SELECT enklare kan mysql -B-alternativet hjälpa.



  1. MySQL Trigger Update med välj från en annan tabell

  2. Generera och läsa streckkoder

  3. Hur fyller man gridview med mysql?

  4. MySQL/PHP-fel:[2002] Endast en användning av varje socketadress (protokoll/nätverksadress/port) är normalt tillåten