Supprime les contraintes en doublons (vieilles contraintes non nommées)
This commit is contained in:
parent
7c29b7f9cc
commit
6fc0d2f03e
@ -130,33 +130,49 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
|
|||||||
//print '<td align="right">'.join('.',$versionarray).'</td></tr>';
|
//print '<td align="right">'.join('.',$versionarray).'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($ok)
|
||||||
// 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','llx_fichinter','llx_facture_fourn','llx_propal','llx_socpeople','llx_telephonie_adsl_fournisseur','llx_telephonie_client_stats','llx_telephonie_contact_facture','llx_telephonie_societe_ligne','llx_telephonie_tarif_client');
|
|
||||||
foreach ($listtables as $val)
|
|
||||||
{
|
{
|
||||||
$sql = "SHOW CREATE TABLE ".$val;
|
$versioncommande=split('\.','4.0');
|
||||||
$resql = $db->query($sql);
|
if (sizeof($versioncommande) && sizeof($versionarray)
|
||||||
if (! $resql) dolibarr_print_error($db);
|
&& versioncompare($versioncommande,$versionarray) <= 0) // Si mysql >= 4.0
|
||||||
{
|
{
|
||||||
$values=$db->fetch_array($resql);
|
// Suppression vieilles contraintes sans noms et en doubles
|
||||||
$i=0;
|
// Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999
|
||||||
$createsql=$values[1];
|
$listtables=array( 'llx_product_fournisseur_price',
|
||||||
while (eregi('CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`',$createsql,$reg) && $i < 100)
|
'llx_fichinter',
|
||||||
|
'llx_facture_fourn',
|
||||||
|
'llx_propal',
|
||||||
|
'llx_socpeople',
|
||||||
|
'llx_telephonie_adsl_fournisseur',
|
||||||
|
'llx_telephonie_client_stats',
|
||||||
|
'llx_telephonie_contact_facture',
|
||||||
|
'llx_telephonie_societe_ligne',
|
||||||
|
'llx_telephonie_tarif_client');
|
||||||
|
foreach ($listtables as $val)
|
||||||
{
|
{
|
||||||
$sqldrop="ALTER TABLE ".$val." DROP FOREIGN KEY ".$reg[1];
|
$sql = "SHOW CREATE TABLE ".$val;
|
||||||
$resqldrop = $db->query($sqldrop);
|
$resql = $db->query($sql);
|
||||||
if ($resqldrop)
|
if (! $resql) dolibarr_print_error($db);
|
||||||
{
|
{
|
||||||
print '<tr><td colspan="2">'.$sqldrop.";</td></tr>\n";
|
$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 '<tr><td colspan="2">'.$sqldrop.";</td></tr>\n";
|
||||||
|
}
|
||||||
|
$createsql=eregi_replace('CONSTRAINT `'.$reg[1].'`','XXX',$createsql);
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
$db->free($resql);
|
||||||
}
|
}
|
||||||
$createsql=eregi_replace('CONSTRAINT `'.$reg[1].'`','XXX',$createsql);
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
$db->free($resql);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user