Effacer les tables d'une base MYSQL avec des clés étrangères

Rédigé par adm - 04 octobre 2013

Il n'est pas possible d'effacer des tables d'un base tant que des clés étrangères existent.

 

Après pas mal d'essai voici un script PHP qui

1) enlève les clés étrangères

2) efface les tables

 

<?php
******************* Par tonsite.info ***********************************
$DBNAME = 'nom_de_la Base';
mysql_connect('Host_de_la_base', 'Nom_de_utilisateur', 'mot_de_passe');

//supprime les clés étrangere
mysql_select_db($DBNAME);
$result = mysql_query("SELECT DISTINCT table_name, constraint_name"
  . " FROM information_schema.key_column_usage"
  . " WHERE constraint_schema = '$DBNAME'"
  . " AND referenced_table_name IS NOT NULL");
while($row = mysql_fetch_assoc($result)) {
  mysql_query("ALTER TABLE `$row[table_name]`"
    . " DROP FOREIGN KEY `$row[constraint_name]`")
    or die(mysql_error());
}
mysql_free_result($result);

// effacer les tables

$sql = "SHOW TABLES FROM $DBNAME";
$result = mysql_query($sql);

if (!$result) {
   echo "Erreur DB, impossible de lister les tables\n";
   echo 'Erreur MySQL : ' . mysql_error();
   exit;
}

while ($row = mysql_fetch_row($result)) {
   $deleteIt=mysql_query("DROP TABLE `$row[0]`"); 
}

   mysql_free_result($result);

mysql_close();

?>

 

Classé dans : phpmysql, - Mots clés : aucun

Écrire un commentaire

Quelle est la première lettre du mot grdt ? : 

Catégories

Archives

Mots clés

Derniers articles

Derniers commentaires