Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL DROP wszystkie tabele, ignorując klucze obce

Uznałem, że wygenerowany zestaw instrukcji usuwania jest przydatny i zalecam następujące poprawki:

  1. Ogranicz generowane krople do swojej bazy danych w ten sposób:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';

Uwaga 1:To nie wykonuje instrukcji DROP, tylko daje ci ich listę. Będziesz musiał wyciąć i wkleić dane wyjściowe do silnika SQL, aby je wykonać.

Uwaga 2:Jeśli masz WIDOKI, będziesz musiał poprawić każdy DROP TABLE `VIEW_NAME` instrukcja DROP VIEW `VIEW_NAME` ręcznie.

  1. Uwaga, na http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , spadanie kaskadowe jest bezcelowe / mylące:

Dlatego, aby instrukcje drop działały, jeśli potrzebujesz:

SET FOREIGN_KEY_CHECKS = 0

Spowoduje to wyłączenie sprawdzania integralności referencyjnej - więc po zakończeniu wykonywania potrzebnych spadków będziesz chciał zresetować sprawdzanie kluczy za pomocą

SET FOREIGN_KEY_CHECKS = 1
  1. Ostateczne wykonanie powinno wyglądać tak:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;

Uwaga:aby łatwiej korzystać z wyjścia SELECT, może pomóc opcja mysql -B.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ochrona przed wstrzykiwaniem SQL za pomocą tylko str_replace

  2. Kod błędu 1064, stan SQL 42000:Wystąpił błąd w składni SQL;

  3. MySQL LOAD DATA LOCAL INFILE niedozwolone przez ODBC

  4. Java PreparedStatement pobiera ostatnio wstawiony identyfikator

  5. JSON_DEPTH() – Znajdź maksymalną głębokość dokumentu JSON w MySQL