Optimisation performances migration
This commit is contained in:
parent
6745bc8950
commit
8982905224
@ -138,7 +138,8 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
|
|||||||
{
|
{
|
||||||
// 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_product_fournisseur_price',
|
/*
|
||||||
|
$listtables=array( 'llx_product_fournisseur_price',
|
||||||
'llx_fichinter',
|
'llx_fichinter',
|
||||||
'llx_facture_fourn',
|
'llx_facture_fourn',
|
||||||
'llx_propal',
|
'llx_propal',
|
||||||
@ -148,34 +149,36 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
|
|||||||
'llx_telephonie_contact_facture',
|
'llx_telephonie_contact_facture',
|
||||||
'llx_telephonie_societe_ligne',
|
'llx_telephonie_societe_ligne',
|
||||||
'llx_telephonie_tarif_client');
|
'llx_telephonie_tarif_client');
|
||||||
|
*/
|
||||||
|
$listtables = $db->DDLListTables($conf->db->name,'');
|
||||||
foreach ($listtables as $val)
|
foreach ($listtables as $val)
|
||||||
{
|
{
|
||||||
$searchTable = '';
|
//print "x".$val."<br>";
|
||||||
$searchTable = $db->DDLListTables($conf->db->name,$val);
|
$sql = "SHOW CREATE TABLE ".$val;
|
||||||
if ($searchTable == $val)
|
$resql = $db->query($sql);
|
||||||
{
|
if ($resql)
|
||||||
$sql = "SHOW CREATE TABLE ".$val;
|
{
|
||||||
$resql = $db->query($sql);
|
$values=$db->fetch_array($resql);
|
||||||
if (! $resql) dolibarr_print_error($db);
|
$i=0;
|
||||||
{
|
$createsql=$values[1];
|
||||||
$values=$db->fetch_array($resql);
|
while (eregi('CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`',$createsql,$reg) && $i < 100)
|
||||||
$i=0;
|
{
|
||||||
$createsql=$values[1];
|
$sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1];
|
||||||
while (eregi('CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`',$createsql,$reg) && $i < 100)
|
$resqldrop = $db->query($sqldrop);
|
||||||
{
|
if ($resqldrop)
|
||||||
$sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1];
|
{
|
||||||
$resqldrop = $db->query($sqldrop);
|
print '<tr><td colspan="2">'.$sqldrop.";</td></tr>\n";
|
||||||
if ($resqldrop)
|
}
|
||||||
{
|
$createsql=eregi_replace('CONSTRAINT `'.$reg[1].'`','XXX',$createsql);
|
||||||
print '<tr><td colspan="2">'.$sqldrop.";</td></tr>\n";
|
$i++;
|
||||||
}
|
}
|
||||||
$createsql=eregi_replace('CONSTRAINT `'.$reg[1].'`','XXX',$createsql);
|
$db->free($resql);
|
||||||
$i++;
|
}
|
||||||
}
|
else
|
||||||
$db->free($resql);
|
{
|
||||||
}
|
// \TODO Ignore only error DB_ERROR_NOSUCHTABLE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -674,19 +674,23 @@ class DoliDb
|
|||||||
/**
|
/**
|
||||||
\brief Liste des tables dans une database.
|
\brief Liste des tables dans une database.
|
||||||
\param database Nom de la database
|
\param database Nom de la database
|
||||||
\param table Nom de la table à rechercher
|
\param table Filtre sur tables à rechercher
|
||||||
\return array Tableau des
|
\return array Tableau des tables de la base
|
||||||
*/
|
*/
|
||||||
function DDLListTables($database, $table='')
|
function DDLListTables($database, $table='')
|
||||||
{
|
{
|
||||||
|
$listtables=array();
|
||||||
|
|
||||||
$like = '';
|
$like = '';
|
||||||
if ($table) $like = "LIKE '".$table."'"
|
if ($table) $like = "LIKE '".$table."'";
|
||||||
$result = mysql_query($this->db, "SHOW TABLES FROM ".$database." ".$like." ");
|
$sql="SHOW TABLES FROM ".$database." ".$like.";";
|
||||||
|
//print $sql;
|
||||||
|
$result = mysql_query($this->db, $sql);
|
||||||
while($row = mysql_fetch_array($result))
|
while($row = mysql_fetch_array($result))
|
||||||
{
|
{
|
||||||
$this->results = $row[0];
|
$listtables[] = $row[0];
|
||||||
}
|
}
|
||||||
return $this->results;
|
return $listtables;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -678,19 +678,23 @@ class DoliDb
|
|||||||
/**
|
/**
|
||||||
\brief Liste des tables dans une database.
|
\brief Liste des tables dans une database.
|
||||||
\param database Nom de la database
|
\param database Nom de la database
|
||||||
\param table Nom de la table à rechercher
|
\param table Filtre sur tables à rechercher
|
||||||
\return array Tableau des
|
\return array Tableau des tables de la base
|
||||||
*/
|
*/
|
||||||
function DDLListTables($database, $table='')
|
function DDLListTables($database, $table='')
|
||||||
{
|
{
|
||||||
|
$listtables=array();
|
||||||
|
|
||||||
$like = '';
|
$like = '';
|
||||||
if ($table) $like = "LIKE '".$table."'"
|
if ($table) $like = "LIKE '".$table."'";
|
||||||
$result = mysqli_query($this->db, "SHOW TABLES FROM ".$database." ".$like." ");
|
$sql="SHOW TABLES FROM ".$database." ".$like.";";
|
||||||
|
//print $sql;
|
||||||
|
$result = mysqli_query($this->db, $sql);
|
||||||
while($row = mysqli_fetch_array($result))
|
while($row = mysqli_fetch_array($result))
|
||||||
{
|
{
|
||||||
$this->results = $row[0];
|
$listtables[] = $row[0];
|
||||||
}
|
}
|
||||||
return $this->results;
|
return $listtables;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user