// Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999 $listtables=array( 'llx_adherent_options', 'llx_bank_class', 'llx_c_ecotaxe', 'llx_c_methode_commande_fournisseur', // table renamed 'llx_c_input_method'); $listtables = $db->DDLListTables($conf->db->name,''); foreach ($listtables as $val) { //print "x".$val."<br>"; $sql = "SHOW CREATE TABLE ".$val; $resql = $db->query($sql); if ($resql) { $values=$db->fetch_array($resql); $i=0; $createsql=$values[1]; while (preg_match('/CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`/i',$createsql,$reg) && $i < 100) { $sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1]; $resqldrop = $db->query($sqldrop); if ($resqldrop) { print '<tr><td colspan="2">'.$sqldrop.";</td></tr>\n"; } $createsql=preg_replace('/CONSTRAINT `'.$reg[1].'`/i','XXX',$createsql); $i++; } $db->free($resql); }