OVH Community, votre nouvel espace communautaire.

Error establishing a database connection (Wordpress - Fichier config OK)


stnweb
26/08/2010, 13h40
Merci pour les précisions !

@Nico J'ai utilisé un exemple mais illustrer mon problème (mysql5-1.ovh.net), il est dont peut être incorrect

Daniel60
26/08/2010, 09h12
Ce cas est tout à fait similaire : http://forum.ovh.net/showthread.php?t=62421

Gaston_Phone
26/08/2010, 08h30
Ouais! j'avais trouvé le début de l'explication.

Merci Nicolas de nous l'avoir précisée.

nicolas.r
26/08/2010, 08h26
Oui en fait il y a eu une mise a jour de certains serveurs, donc le nom de l'host mysql5-1.ovh.net (qui n'est pas correct d'ailleurs avant on utilisais mysql5-1) ne fonctionnais plus, désolé pour l'inaccessibilité du site.

Gaston_Phone
25/08/2010, 20h54
Je suis content que ton problème soit résolu.

Je propose une explication : Au début, le serveur mysql5-1 était pour tous les hébergements mutualisé. Puis, au moment des nouvelles offres Perso, Business, etc. OVH a compartimenté les serveurs SQL selon les offres et petit à petit OVH à sorti les alias mysql5-1.60gp par défaut. et pour toi cela se serait passé le mardi 24 août.

stnweb
25/08/2010, 20h18
@Gaston et Nicolas

Merci mais j'ai trouvé la source du soucis (enfin en partie, sans pouvoir l'expliquer).
J'ai supprimé mon fichier de config et j'en ai recréé un autre. Dans l'ancien pour indiquer la BDD, j'utilisais :

define('DB_HOST', 'mysql5-1.ovh.net');

que j'ai remplacé par

define('DB_HOST', 'mysql5-1.60gp');

Dans toutes mes sauvegardes (depuis plus d'un an), j'utilisais la première ligne de code et tout fonctionnais très bien.

@Nico Je vais contacter mon collègue qui a déclaré le ticket pour le passer en résolu (on est en plein transfert d'offre sur un autre compte donc voila).

Grand merci à toi Gaston !
Merci à toi Nicolas d’être intervenu sur le forum.

Gaston_Phone
25/08/2010, 14h44
@stnweb : si Nicolas (OVH Team) vient à ton secours : fonce. Tu es sauvé.

nicolas.r
25/08/2010, 13h57
Tu as le numéro du ticket ? je vais te donne plus d'information.

Merci.

stnweb
25/08/2010, 13h44
Mis à un part un hack, personne. Je suis le seul à avoir les pass et à le gerer.

Gaston_Phone
25/08/2010, 13h42
Citation Envoyé par stnweb
... rien up sur le FTP....
Toi : NON, mais quelqu'un d'autre ?

stnweb
25/08/2010, 13h36
Merci Gaston.

Mais je ne comprends pas bien comment les scripts WP peuvent avoir un problème alors que rien n'a été fait entre la minute ou tout était ok, et celle ou tout était down vu que je n'ai rien mis à jour entre temps/rien changé sur la BDD/rien up sur le FTP.

Je vais exposer mon problème sur un forum dédié WP et reviendrais vers toi (ici) pour mettre à jour ce topic

Gaston_Phone
25/08/2010, 13h23
Citation Envoyé par stnweb
Un ticket d'incident a été ouvert auprès d'OVH qui m'a affirmé que le fichier de configuration était mal renseigné, ce qui n'est actuellement pas le cas.
Je serais plutôt d'accord avec OVH.

Gaston_Phone
25/08/2010, 13h21
Si tu as bien réalisé ce test avec ta vraie base de données, cela veut dire que tu as un problème avec tes scripts Wordpress et que OVH est en dehors du coup.

Aussi je te propose d'aller exposer ton problème sur un forum dédié Wordpress.

stnweb
25/08/2010, 12h56
Merci !

Edit : Voici le résultat (j'ai remplacé le nom de ma table par test ainsi que le serveur par un autre pour éviter de laisser ce genre d'infos sur un forum)

mysql_connect=Resource id #1 - Erreur=
mysql_select_db=1 - Erreur=

Test de DROP/CREATE de la table 'Tab_test_DB' dans la base 'test' sur le serveur 'mysql5-1'

Supression de la table Tab_test_DB - Erreur= - $sql_query=DROP TABLE IF EXISTS `Tab_test_DB` - $result_query=1
Création de la table Tab_test_DB- Erreur= - $sql_query=CREATE TABLE `Tab_test_DB` ( `Id` int(11) NOT NULL auto_increment, `NOM` varchar(32) NOT NULL default '', `PRENOM` varchar(32) NOT NULL default '', PRIMARY KEY (`Id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 - $result_query=1
Ajout d'un enregistrement - Erreur= - $sql_query=INSERT INTO `Tab_test_DB` values ('','DURANDAL','Michel') - $result_query=1
Ajout d'un enregistrement - Erreur= - $sql_query=INSERT INTO `Tab_test_DB` values ('','DURANDAL','Pierre') - $result_query=1
Ajout d'un enregistrement - Erreur= - $sql_query=INSERT INTO `Tab_test_DB` values ('','accents-éèàâ','Jean-Noël') - $result_query=1
SELECT dans la table Tab_test_DB - Erreur= - $sql_query=SELECT Id, NOM, PRENOM FROM `Tab_test_DB` WHERE NOM='DURANDAL' - $result_query=Resource id #2
SELECT dans la table Tab_test_DB - Erreur= - $sql_query=SELECT Id, NOM, PRENOM FROM `Tab_test_DB` - $result_query=Resource id #3
Nombre d'enregistrements trouvés = 3
Table Tab_test_DB : 1 - $NOM=DURANDAL - $PRENOM=Michel
Table Tab_test_DB : 2 - $NOM=DURANDAL - $PRENOM=Pierre
Table Tab_test_DB : 3 - $NOM=accents-éèàâ - $PRENOM=Jean-Noël

Durée du traitement = 0.17 secondes

Gaston_Phone
25/08/2010, 12h49
Puis-je te suggérer de faire un tout petit script en PHP test_SQL.php, dans lequel tu vas :
- Ouvrir une connexion à ta base,
- Supprimer une table si elle existe,
- Créer une table,
- Faire une requête dans une table,
- Afficher les résultats de ta requête,
- Fermer ta connexion.

Ce script te permettra, indépendamment de tous tes autres scripts, de voir si ta base de données est accessible ou non, ainsi que la durée du traitement.

Peux-tu nous donner le résultat de ce test ? Merci.

test_SQL.php

Code PHP:

   error_reporting
(E_ALL);   // Activer le rapport d'erreurs PHP


function getmicrotime()
   { 
   list(
$usec$sec) = explode(" ",microtime()); 
   return ((float)
$usec + (float)$sec); 
   } 

   
$Date_start getmicrotime();


// ******  Exemples de configuration selon les hébergements mutualisés ******

//   Perso
//   ------
//      $DBhost  = "mysql5-14.perso";
//      $DBowner = "";  // Ton login SQL
//      $DBName  = $DBowner;

//   Pro
//   ---
//      $DBhost  = "mysql5-6.pro";
//      $DBowner = "";  // Ton login SQL
//      $DBName  = $DBowner;

// ******  Fin des exemples de configuration


// ******  Configuration - Debut ******
   
$DBhost  "mysql5-6";   // Par exemple
   
$DBowner "";  // ton login SQL
   
$DBpw    "";  // ton password SQL
   
$DBName  $DBowner;
// ******  Configuration - Fin ******
    

      
$Table_SQL "Tab_test_DB";

      
$fh_db mysql_connect($DBhost$DBowner$DBpw);
      
$Erreur mysql_error();
      echo 
" mysql_connect=".$fh_db." - Erreur="
.mysql_error()." 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      
$sel mysql_select_db($DBName$fh_db);
      echo 
" mysql_select_db=".$sel." - Erreur=".mysql_error()." 
 
\n";

      echo 
" Test de DROP/CREATE de la table '.$Table_SQL"' dans la base '.$DBName"' sur le serveur '.$DBhost"
  
";

      
//  Supression de la table Tab_test_DB

      
$sql_query="DROP TABLE IF EXISTS `Tab_test_DB` ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"Supression de la table Tab_test_DB - Erreur=".mysql_error()." - \$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      
//  Création de la table Tab_test_DB

      
$sql_query="CREATE TABLE `Tab_test_DB` (  `Id` int(11) NOT NULL auto_increment,  `NOM` varchar(32) NOT NULL default '',  `PRENOM` varchar(32) NOT NULL default '', PRIMARY KEY  (`Id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"Création de la table Tab_test_DB- Erreur=".mysql_error()."  - \$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      
//  Ajout d'un Premier enregistrement

      
$sql_query="INSERT INTO `Tab_test_DB`  values ('','DURANDAL','Michel')  ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"Ajout d'un enregistrement - Erreur=".mysql_error()." - \$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      
//  Ajout d'un Deuxième enregistrement

      
$sql_query="INSERT INTO `$Table_SQL`  values ('','DURANDAL','Pierre')  ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"Ajout d'un enregistrement - Erreur=".mysql_error()." - \$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      
//  Ajout d'un Troisième enregistrement

      
$sql_query="INSERT INTO `Tab_test_DB`  values ('','accents-éèàâ','Jean-Noël')  ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"Ajout d'un enregistrement - Erreur=".mysql_error()." - \$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      
//  SELECT dans la table Tab_test_DB : NOM='DURANDAL'

      
$sql_query="SELECT Id, NOM, PRENOM FROM `Tab_test_DB` WHERE NOM='DURANDAL' ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"SELECT dans la table Tab_test_DB  - Erreur=".mysql_error()." - \$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      
//  SELECT dans la table Tab_test_DB : tous les enregistrements

      
$sql_query="SELECT Id, NOM, PRENOM FROM `Tab_test_DB` ";    // Requête
      
$result_query=mysql_query($sql_query);     // Exécution de la requête
      
$Erreur mysql_error();
      echo 
"SELECT dans la table Tab_test_DB  - Erreur=".mysql_error()." - \$sql_query=$sql_query - \$result_query=$result_query 
 \n";
      if (
strlen($Erreur) > 0)   exit;
      
$result_count_row_get mysql_num_rows($result_query);  
      
$Erreur mysql_error();
      echo 
" Nombre d'enregistrements trouvés = $result_count_row_get 
 \n";
      if (
strlen($Erreur) > 0)   exit;

      if (
$result_query)
         {
         
$Count 0;
         while (
$result_query && $row=mysql_fetch_array($result_query)) 
            { 
            
$Count     $Count 1;
            
$NOM       $row['NOM'];
            
$PRENOM    $row['PRENOM'];
            echo 
" Table  Tab_test_DB : ".$Count." - \$NOM=".$NOM." - \$PRENOM=".$PRENOM." 
 \n";
            }
         }

      
// Fermeture de la connexion    
      
mysql_close($fh_db);                                 


      
$Date_end getmicrotime();
      
$Duree $Date_end $Date_start;
      
$Duree sprintf("%01.2f"$Duree);

      echo 

  Durée du traitement = 
$Duree secondes 
 \n";


?>

stnweb
25/08/2010, 11h50
As-tu supprimé les fichiers temporaires de ton navigateur ? Oui
As-tu testé avec un autre navigateur : IE, FX, Safari, etc. ? Oui

Gaston_Phone
25/08/2010, 11h45
As-tu supprimé les fichiers temporaires de ton navigateur ?
As-tu testé avec un autre navigateur : IE, FX, Safari, etc. ?

stnweb
25/08/2010, 11h09
Bonjour,

Voici mon problème, j'espère que vous pourrez m'aider !

Date de l'incident : Mardi 24 août aux environs de 10h30

Hier matin, je travaillais sur mon site web (création d'article) lorsqu'après un simple refresh, l'erreur "Error establishing a database connection" est apparue.

Pensant à un problème peu important (j'ai déjà eu ce type d'erreur, un simple refresh de la page corrigeait le tout), je refresh donc la page, mais cette fois-ci l'effet escompté ne s'est pas produit.

J'ai donc vérifié le fichier de config wp-config.php plusieurs fois pour voir si tout était bien renseigné, rien à signaler de ce côté là. Le fichier n'a jamais été modifié depuis la création du site il y a plus d'un an.

J'ai ensuite vérifié si j'avais encore accès à la BDD (OK) ainsi qu'au serveur de données (OK).

Par la suite je suis tombé sur un article (http://squishee.fr/error-establishin...onnection-ovh/) d'une personne qui avait eu le même problème et qui préconisait de supprimer tout thème/plug-in inutile, choses que j'ai faite, mais avec un résultat négatif sur la résolution de mon problème.

Un ticket d'incident a été ouvert auprès d'OVH qui m'a affirmé que le fichier de configuration était mal renseigné, ce qui n'est actuellement pas le cas.

Dans l'attente d'une aide de votre part.
Cordialement.