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

 MySQL Discussion :

Pb avec CREATE TEMPORARY TABLE


Sujet :

MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut Pb avec CREATE TEMPORARY TABLE
    Bonjour,

    Un problème chasse l'autre...
    Etant passé de Mysql.4 à Mysql.5 pour pouvoir utiliser la propriété CREATE TEMPORARY TABLE, et après avoir plus ou moins résolu les problèmes liés à ce transfert, je constate que cette propriété ne fonctionne pas davantage avec Mysql.5 . Que n'ai-je pas encore fait qu'il aurait fallu faire pour activer cette propriété?
    Merci d'avance,

    Thierry

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si tu décris plus précisément ce que tu as essayé de faire, peut-être qu'on pourra te le dire !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    Je fais donc
    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
     
    $table_compo = "CREATE TABLE TEMPORARY IF NOT EXISTS `".$nom."` (
      `id_produit` int(11) NOT NULL auto_increment,
      `quantite` decimal(5,2) default '0.00',
      `produit` varchar(50) default NULL,
      `energie` decimal(4,2) default '0.00',
      `eau` decimal(4,2) default '0.00',
      `proteines` decimal(4,2) default '0.00',
      `glucides` decimal(4,2) default '0.00',
      `sucres` decimal(4,2) default '0.00',
      `lipides` decimal(4,2) default '0.00',
      `satures` decimal(4,2) default '0.00',
      `fibres` decimal(4,2) default '0.00',
      `sodium` decimal(4,2) NOT NULL default '0',
      `source` varchar(20) default 'CIQUAL',
      PRIMARY KEY  (`id_produit`)
    ) TYPE=MyISAM AUTO_INCREMENT=0;";
    $verif=mysql_query($table_compo);
    if(!$verif){echo mysql_error();}
    J'exécute: pas de table, pas de message d'erreur.
    Par contre si j'enlève TEMPORARY, ça marche.
    Il se pourrait que le problème vienne du serveur.. . (1and1), j'ai téléphoné, écrit, ils vont regarder.
    Si en attendant...
    Merci,
    Thierry

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ce n'est pas CREATE TABLE TEMPORARY mais CREATE TEMPORARY TABLE.

    Ceci dit, ta structure ressemble plutôt à une table définitive donc CREATE TABLE tout simplement !

    Pourquoi veux tu en faire une table temporaire ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    L'erreur ne vient pas de là, je n'ai fait l'inversion qu'ici.
    Je veux faire une table temporaire car elle sert à stocker des données qui vont servir à 1 utilisateur pour faire 1 calcul. Un autre utilisateur pourra faire le même calcul sur une autre table en même temps, etc, et à la fermeture de session, les tables doivent disparaitre... faute de quoi ma bse se chargerait en un nombre considérable de tables.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tu peux aussi faire un CREATE TABLE simple et un DROP TABLE à la fin du processus quand le calcul est terminé.

    Au fait, qu'est-ce qui te fait dire que la table temporaire n'est pas créée ?
    Tu l'alimentes puis tu l'interroges sur la même session utilisateur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    Je veux que l'utilisateur puisse contrôler en cours d'utilisation, en visualisant un tableau, à la fois ses calculs, et les données qui lui ont permis de les faire. A tout moment il peut quitter la page, et la table restera en place... mon souci.

    Je vois bien que la table temporaire n'est pas crée, car mon tableau ne s'édite pas, et elle n'apparait pas non plus après rafraichissement de mon interface php Myadmin

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    [quote=anémone;5597670]Je veux que l'utilisateur puisse contrôler en cours d'utilisation, en visualisant un tableau, à la fois ses calculs, et les données qui lui ont permis de les faire. A tout moment il peut quitter la page, et la table restera en place... mon souci.

    Je vois bien que la table temporaire n'est pas crée, car mon tableau ne s'édite pas, et
    elle n'apparait pas non plus après rafraichissement de mon interface php Myadmin
    Ça c'est normal puisque c'est une table temporaire ! En rafraîchissant phpMyAdmin, on change de processus donc la table disparaît.

    Si dans une fenêtre SQL de phpMyAdmin, tu fais ceci :
    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
    CREATE TEMPORARY TABLE pays (
    id INTEGER NOT NULL,
    code CHAR(3) NOT NULL,
    nom VARCHAR(20) NOT NULL
    );
     
    INSERT INTO pays
    VALUES (1, 'FR', 'France'), 
        (2, 'GB', 'Grande-Bretagne'), 
        (3, 'USA', 'Etats Unis'), 
        (4, 'IT', 'Italie');
     
    SELECT id, code
    FROM pays
    WHERE nom = 'Italie';
    => Tu obtiendras bien la bonne réponse.

    Mais si tu passes les requêtes les unes après les autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TEMPORARY TABLE pays (
    id INTEGER NOT NULL,
    code CHAR(3) NOT NULL,
    nom VARCHAR(20) NOT NULL
    );
    => Votre requête SQL a été exécutée avec succès ( Traitement en 0.0004 sec. )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO pays
    VALUES (1, 'FR', 'France'), 
        (2, 'GB', 'Grande-Bretagne'), 
        (3, 'USA', 'Etats Unis'), 
        (4, 'IT', 'Italie');
    => #1146 - Table 'test.pays' doesn't exist

    Dans un programme PHP, tu ne peux pas enchaîner les requêtes comme dans une fenêtre phpMyAdmin. Il faut faire un mysql_query entre chaque requête mais avec une table temporaire, il faut que les requêtes s'enchaînent dans la même exécution de programme.

    Ceci fonctionne :
    Code PHP : 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
    $rq1 = "
    CREATE TEMPORARY TABLE pays (
    id INTEGER NOT NULL,
    code CHAR(3) NOT NULL,
    nom VARCHAR(20) NOT NULL
    )
    ";
     
    $rq2 = "
    INSERT INTO pays
    VALUES (1, 'FR', 'France'), 
        (2, 'GB', 'Grande-Bretagne'), 
        (3, 'USA', 'Etats Unis'), 
        (4, 'IT', 'Italie')
    ";
     
    $rq3 = "
    SELECT id, code
    FROM pays
    WHERE nom = 'Italie'
    ";
     
    mysql_query($rq1);
    mysql_query($rq2);
    mysql_query($rq3);
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 13
    Par défaut
    Limpide!

    Merci!
    Je vais mettre ça en exécution ... un peu plus tard. Là j'ai du sable dans les yeux, j'ai séché toute la journée sur le problème de modifier des pages en charset latin basé sur Mysql.4, en utf-8 basée sur Mysql.5: l'horreur!!!!!
    J'avais cru avancer, et puis plus rien, retour à la case départ.
    Un bon tuto???

Discussions similaires

  1. create temporary table, memoire ou disque?
    Par ionesco dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/10/2009, 23h17
  2. Create temporary table avec KEY
    Par olibara dans le forum Langage SQL
    Réponses: 16
    Dernier message: 10/02/2009, 11h08
  3. create temporary table : unicité des sessions
    Par firejocker dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 22/12/2007, 11h20
  4. Query avec un CREATE TEMPORARY TABLE = erreur ?
    Par d3mone dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/05/2007, 19h11
  5. create temporary table
    Par ghostlord79 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/02/2004, 16h57

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