示例#1
0
			// 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);
				}