diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php
index 663b74902a4..0c451f7cafd 100644
--- a/htdocs/install/upgrade.php
+++ b/htdocs/install/upgrade.php
@@ -138,7 +138,8 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
{
// Suppression vieilles contraintes sans noms et en doubles
// 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_facture_fourn',
'llx_propal',
@@ -148,34 +149,36 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
'llx_telephonie_contact_facture',
'llx_telephonie_societe_ligne',
'llx_telephonie_tarif_client');
+ */
+ $listtables = $db->DDLListTables($conf->db->name,'');
foreach ($listtables as $val)
- {
- $searchTable = '';
- $searchTable = $db->DDLListTables($conf->db->name,$val);
- if ($searchTable == $val)
- {
- $sql = "SHOW CREATE TABLE ".$val;
- $resql = $db->query($sql);
- if (! $resql) dolibarr_print_error($db);
- {
- $values=$db->fetch_array($resql);
- $i=0;
- $createsql=$values[1];
- while (eregi('CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`',$createsql,$reg) && $i < 100)
- {
- $sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1];
- $resqldrop = $db->query($sqldrop);
- if ($resqldrop)
- {
- print '
| '.$sqldrop."; |
\n";
- }
- $createsql=eregi_replace('CONSTRAINT `'.$reg[1].'`','XXX',$createsql);
- $i++;
- }
- $db->free($resql);
- }
- }
- }
+ {
+ //print "x".$val."
";
+ $sql = "SHOW CREATE TABLE ".$val;
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $values=$db->fetch_array($resql);
+ $i=0;
+ $createsql=$values[1];
+ while (eregi('CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`',$createsql,$reg) && $i < 100)
+ {
+ $sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1];
+ $resqldrop = $db->query($sqldrop);
+ if ($resqldrop)
+ {
+ print '| '.$sqldrop."; |
\n";
+ }
+ $createsql=eregi_replace('CONSTRAINT `'.$reg[1].'`','XXX',$createsql);
+ $i++;
+ }
+ $db->free($resql);
+ }
+ else
+ {
+ // \TODO Ignore only error DB_ERROR_NOSUCHTABLE
+ }
+ }
}
}
diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php
index 93f22c99734..a0787311f64 100644
--- a/htdocs/lib/databases/mysql.lib.php
+++ b/htdocs/lib/databases/mysql.lib.php
@@ -674,19 +674,23 @@ class DoliDb
/**
\brief Liste des tables dans une database.
\param database Nom de la database
- \param table Nom de la table à rechercher
- \return array Tableau des
+ \param table Filtre sur tables à rechercher
+ \return array Tableau des tables de la base
*/
function DDLListTables($database, $table='')
{
+ $listtables=array();
+
$like = '';
- if ($table) $like = "LIKE '".$table."'"
- $result = mysql_query($this->db, "SHOW TABLES FROM ".$database." ".$like." ");
+ if ($table) $like = "LIKE '".$table."'";
+ $sql="SHOW TABLES FROM ".$database." ".$like.";";
+ //print $sql;
+ $result = mysql_query($this->db, $sql);
while($row = mysql_fetch_array($result))
{
- $this->results = $row[0];
+ $listtables[] = $row[0];
}
- return $this->results;
+ return $listtables;
}
/**
diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php
index aab0fadf300..3a844fb6cab 100644
--- a/htdocs/lib/databases/mysqli.lib.php
+++ b/htdocs/lib/databases/mysqli.lib.php
@@ -678,19 +678,23 @@ class DoliDb
/**
\brief Liste des tables dans une database.
\param database Nom de la database
- \param table Nom de la table à rechercher
- \return array Tableau des
+ \param table Filtre sur tables à rechercher
+ \return array Tableau des tables de la base
*/
function DDLListTables($database, $table='')
{
+ $listtables=array();
+
$like = '';
- if ($table) $like = "LIKE '".$table."'"
- $result = mysqli_query($this->db, "SHOW TABLES FROM ".$database." ".$like." ");
+ if ($table) $like = "LIKE '".$table."'";
+ $sql="SHOW TABLES FROM ".$database." ".$like.";";
+ //print $sql;
+ $result = mysqli_query($this->db, $sql);
while($row = mysqli_fetch_array($result))
{
- $this->results = $row[0];
+ $listtables[] = $row[0];
}
- return $this->results;
+ return $listtables;
}
/**