Fix: add database prefix filter
This commit is contained in:
parent
602e64282c
commit
59a6e28315
@ -238,45 +238,51 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
|
|||||||
&& versioncompare($versioncommande,$versionarray) <= 0) // Si mysql >= 4.0
|
&& versioncompare($versioncommande,$versionarray) <= 0) // Si mysql >= 4.0
|
||||||
{
|
{
|
||||||
// Suppression vieilles contraintes sans noms et en doubles
|
// Suppression vieilles contraintes sans noms et en doubles
|
||||||
// Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999
|
// Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999
|
||||||
$listtables=array( 'llx_adherent_options',
|
$listtables=array(
|
||||||
'llx_bank_class',
|
MAIN_DB_PREFIX.'adherent_options',
|
||||||
'llx_c_ecotaxe',
|
MAIN_DB_PREFIX.'bank_class',
|
||||||
'llx_c_methode_commande_fournisseur', // table renamed
|
MAIN_DB_PREFIX.'c_ecotaxe',
|
||||||
'llx_c_input_method');
|
MAIN_DB_PREFIX.'c_methode_commande_fournisseur', // table renamed
|
||||||
|
MAIN_DB_PREFIX.'c_input_method'
|
||||||
|
);
|
||||||
|
|
||||||
$listtables = $db->DDLListTables($conf->db->name,'');
|
$listtables = $db->DDLListTables($conf->db->name,'');
|
||||||
foreach ($listtables as $val)
|
foreach ($listtables as $val)
|
||||||
{
|
{
|
||||||
//print "x".$val."<br>";
|
// Database prefix filter
|
||||||
$sql = "SHOW CREATE TABLE ".$val;
|
if (preg_match('/^'.MAIN_DB_PREFIX.'/', $val))
|
||||||
$resql = $db->query($sql);
|
{
|
||||||
if ($resql)
|
//print "x".$val."<br>";
|
||||||
{
|
$sql = "SHOW CREATE TABLE ".$val;
|
||||||
$values=$db->fetch_array($resql);
|
$resql = $db->query($sql);
|
||||||
$i=0;
|
if ($resql)
|
||||||
$createsql=$values[1];
|
{
|
||||||
while (preg_match('/CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`/i',$createsql,$reg) && $i < 100)
|
$values=$db->fetch_array($resql);
|
||||||
{
|
$i=0;
|
||||||
$sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1];
|
$createsql=$values[1];
|
||||||
$resqldrop = $db->query($sqldrop);
|
while (preg_match('/CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`/i',$createsql,$reg) && $i < 100)
|
||||||
if ($resqldrop)
|
{
|
||||||
{
|
$sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1];
|
||||||
print '<tr><td colspan="2">'.$sqldrop.";</td></tr>\n";
|
$resqldrop = $db->query($sqldrop);
|
||||||
}
|
if ($resqldrop)
|
||||||
$createsql=preg_replace('/CONSTRAINT `'.$reg[1].'`/i','XXX',$createsql);
|
{
|
||||||
$i++;
|
print '<tr><td colspan="2">'.$sqldrop.";</td></tr>\n";
|
||||||
}
|
}
|
||||||
$db->free($resql);
|
$createsql=preg_replace('/CONSTRAINT `'.$reg[1].'`/i','XXX',$createsql);
|
||||||
}
|
$i++;
|
||||||
else
|
}
|
||||||
{
|
$db->free($resql);
|
||||||
if ($db->lasterrno() != 'DB_ERROR_NOSUCHTABLE')
|
}
|
||||||
{
|
else
|
||||||
print '<tr><td colspan="2"><font class="error">'.$sql.' : '.$db->lasterror()."</font></td></tr>\n";
|
{
|
||||||
}
|
if ($db->lasterrno() != 'DB_ERROR_NOSUCHTABLE')
|
||||||
}
|
{
|
||||||
}
|
print '<tr><td colspan="2"><font class="error">'.$sql.' : '.$db->lasterror()."</font></td></tr>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user