IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur no database selected


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut Erreur no database selected
    Bonjour à tous, ça m'avait presque manqué d'avoir des problèmes tellement prise de tête que je doive venir les partager ici

    Pour un site internet de jeu, nous avons développé des crons pour effectuer des actions sur la base, jusque là, rien de sorcier.

    Seulement voilà un petit matin, sans aucune action apparente de notre part, hors développements habituels sur les fichiers du projet, nous nous retrouvons avec des logs d'erreur...

    Le log signale un "no database selected" pourtant tout le cron s'exécute parfaitement ensuite!

    log.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ----------------
    Error on the file : cron.php 
    Bad Request : SELECT COUNT(id) FROM table WHERE active = 1 AND attitude IS NOT NULL
    Error : No database selected
    Date : 2009-03-31 07:00:02
    ----------------
    $_SESSION:
    ----------------
    NULL
     
    -------------------
    Concrètement :

    dbmanager.inc.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
     
    //////////////////////////////////////////////////
    // Titre : dbmanager.inc.php
    // Description: Ce fichier sert de base à la gestion des accès BDD
    // Classe mère : Aucune
    // Classes filles: Aucune
    // Responsable : Linio
    //////////////////////////////////////////////////
     
    class DBManager {
     
    public static function connect(){
    	mysql_connect('monhote','login','pass');
    	mysql_select_db('madb');
    	mysql_query("SET NAMES 'utf8'");
    }
     
     
    public static function processQuery($query){
     
    	$ressourceLink = mysql_query($query);
     
    	if ($ressourceLink)
    		return $ressourceLink;
    	else{
    	// Erreur dans la requête
    		$file = array_pop(explode('/', $_SERVER['PHP_SELF']));
    		$handle = fopen("monlog.txt", "a");
    		$error = '
    ----------------
    Error on the file : '.$file.' 
    Bad Request : '.$query.'
    Error : '.mysql_error().'
    Date : '.date("Y-m-d H:i:s").'
    ----------------
    $_SESSION:
    ----------------
    ';
    ob_start();
    var_dump($_SESSION);
    $error .= ob_get_contents();
    ob_end_clean();
    $error .= '
    -------------------
    ';
    		fwrite($handle,$error);
    		exit('<b>ERREUR : Une requête SQL a provoqué une Erreur, un administrateur a été contacté pour régler le problème.</b>');
     
    	}	
    }
     
    [...]
     
    }
     
    ?>
    cron.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    <?php
     
    // Le fichier config ne contient que des lignes de define("var","valeur");
    include_once ('../includes/config.inc.php');
    require_once ('../classes/dbmanager.inc.php');
     
    DBManager::connect();
     
     
    $link = DBManager::processQuery('SELECT COUNT(id) FROM table WHERE active = 1');
    $count = mysql_fetch_row($link);
     
    [...]
     
    ?>
    Tous les fichiers lancés par cron ont le même problème (4 crons au total).
    Vous avez une idée parce que mon admin système et moi séchons méchamment

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Peut-être une histoire de portée de variable...

    Si tu essayais de stocker le lien avec la base en tant qu'attribut statique dans ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class DBManager {
     
    protected static $lnk;
     
    public static function connect(){
        self::$lnk = mysql_connect('monhote','login','pass');
        mysql_select_db('madb', self::$lnk);
        mysql_query("SET NAMES 'utf8'", self::$lnk);
    }
     
    public static function processQuery($query){
     
        $ressourceLink = mysql_query($query, self::$lnk);
     
        if ($ressourceLink)
            return $ressourceLink;
        else{
     
     
    [...]
     
     
    }

  3. #3
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    Bonjour, merci pour la réponse.
    Apparemment ça n'est pas ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error : No database selected
    Date : 2009-04-14 18:20:01
    C'aurait été étrange cela dit parce que le site utilise la même classe pour se connecter, et y'a jamais aucun soucis, qui plus est, seule la "première" requête déconne (enfin elle déconne pas vraiment, elle renvoie juste cette erreur, tout le reste marche bien.

    Une autre idée?

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    La première requête quelle qu'elle soit ? Ou la première requête (toujours la même) du script ?

  5. #5
    Membre éclairé Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Par défaut
    Et bien la première requête quelle qu'elle soit, mais bon là en l'occurence on ne la change pas, donc c'est toujours la même (cependant comme précisé plus haut tous les crons plantent avec des requêtes différentes en "première requête")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Error on the file : cron24.php 
    Bad Request : SELECT id, element, control FROM unetable
    Error : No database selected
    Date : 2009-04-15 00:00:02
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Error on the file : cron6.php 
    Bad Request : SELECT race, 
    	COUNT(id) as nb, 
    	SUM(money) as mn
    	FROM unetable INNER JOIN uneautretable ON unetable.id = uneautretable.id 
    	GROUP BY unchamp
    Error : No database selected
    Date : 2009-04-15 00:00:02
    Très étrange un des crons (cron1.php) ne plante pas, sa première requête :
    Totalement incompréhensible...

Discussions similaires

  1. [MySQL] Erreur "no database selected"
    Par guyanais dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/10/2013, 19h45
  2. [MySQL] no database selected + petite erreur de fonction!
    Par Ayosha dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2011, 11h19
  3. [MySQL] Erreur SQL : No database selected , je ne comprend pas :(
    Par nico77580 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/07/2010, 11h04
  4. [MySQL] erreur : No database selected
    Par MSM_007 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/04/2010, 14h17
  5. Erreur No database selected
    Par legide dans le forum JDBC
    Réponses: 1
    Dernier message: 05/08/2009, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo