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

Requêtes MySQL Discussion :

INSERT SELECT erreur Unknown column [MySQL-5.6]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut INSERT SELECT erreur Unknown column
    Bonjour à tous,

    Je galère actuellement pour migrer une table vers une autre par ligne de commande.

    Voici ma commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO domo_releve ( domo_rel_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_rdc, domo_rel_t_etg ) 
    SELECT tb_domotic.domo_date, tb_domotic.domo_rel_wh, tb_domotic.domo_rel_a, tb_domotic.domo_rel_p, tb_domotic.domo_rel_t_ext, tb_domotic.domo_rel_t_ent, tb_domotic.domo_rel_t_chb_M 
    FROM tb_domotic WHERE (tb_domotic.domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00');
    Et j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1054 (42S22): Unknown column 'domo_date' in 'where clause'
    Alors que quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tb_domotic.domo_date, tb_domotic.domo_rel_wh, tb_domotic.domo_rel_a, tb_domotic.domo_rel_p, tb_domotic.domo_rel_t_ext, tb_domotic.domo_rel_t_ent, tb_domotic.domo_rel_t_chb_M 
    FROM tb_domotic WHERE (tb_domotic.domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00');
    J'ai bien mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    +---------------------+-------------+------------+------------+----------------+----------------+------------------+
    | domo_date           | domo_rel_wh | domo_rel_a | domo_rel_p | domo_rel_t_ext | domo_rel_t_ent | domo_rel_t_chb_M |
    +---------------------+-------------+------------+------------+----------------+----------------+------------------+
    | 2015-01-28 17:10:00 |    74785366 |          2 |        530 |           NULL |           NULL |             NULL |
    | 2015-01-28 17:11:00 |    74785373 |          2 |        540 |           NULL |           NULL |             NULL |
    | 2015-01-28 17:12:00 |    74785380 |          2 |        530 |           NULL |           NULL |             NULL |
    | 2015-01-28 17:13:00 |    74785388 |          2 |        530 |           NULL |           NULL |             NULL |
    ...
    D'où peut venir mon problème, je ne comprends plus ...
    D'avance merci.

    P.S. Pour info voici mon environnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    +-------------------------+---------------------+
    | Variable_name           | Value               |
    +-------------------------+---------------------+
    | innodb_version          | 5.6.22              |
    | protocol_version        | 10                  |
    | slave_type_conversions  |                     |
    | version                 | 5.6.22              |
    | version_comment         | Source distribution |
    | version_compile_machine | amd64               |
    | version_compile_os      | FreeBSD9.2          |
    +-------------------------+---------------------+

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 636
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Soit vous mettez un alias partout soit nulle part, donc
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FROM tb_domotic  as tb_domotic
    WHERE tb_domotic.domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00';
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM tb_domotic 
    WHERE domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00';

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    Quelques soit mes requêtes, j'ai toujours la même erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO domo_releve ( domo_rel_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_rdc, domo_rel_t_etg )
    SELECT domo_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_ent, domo_rel_t_chb_M
    FROM tb_domotic WHERE (domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00');
     
    ERROR 1054 (42S22): Unknown column 'domo_date' in 'where clause'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO domo_releve ( domo_rel_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_rdc, domo_rel_t_etg )
    SELECT tb.domo_date, tb.domo_rel_wh, tb.domo_rel_a, tb.domo_rel_p, tb.domo_rel_t_ext, tb.domo_rel_t_ent, tb.domo_rel_t_chb_M
    FROM tb_domotic as tb WHERE (tb.domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00');
     
    ERROR 1054 (42S22): Unknown column 'domo_date' in 'where clause'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO domo_releve ( domo_rel_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_rdc, domo_rel_t_etg ) 
    SELECT tb_domotic.domo_date, tb_domotic.domo_rel_wh, tb_domotic.domo_rel_a, tb_domotic.domo_rel_p, tb_domotic.domo_rel_t_ext, tb_domotic.domo_rel_t_ent, tb_domotic.domo_rel_t_chb_M 
    FROM tb_domotic as tb_domotic WHERE (tb_domotic.domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00');
     
    ERROR 1054 (42S22): Unknown column 'domo_date' in 'where clause'

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 636
    Billets dans le blog
    10
    Par défaut
    La requete select seule qui fonctionne a -t- elle bien été faite par "copier coller" de la partie select de la requete globale ? (je soupçonne un caractère à la dans le nom de colonne)
    Sinon, faites l'exercice pour en avoir le cœur net
    De mon coté les mêmes requêtes (sur des tables différentes) fonctionnent toutes les 3, j'ai seulement supprimé la parenthèse inutile du where, mais c'est sans rapport avec votre souci

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    J'ai retapé la commande à la main sans copier-coller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql> INSERT INTO domo_releve ( domo_rel_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_rdc, domo_rel_t_etg ) SELECT tb.domo_date, tb.domo_rel_wh, tb.domo_rel_a, tb.domo_rel_p, tb.domo_rel_t_ext, tb.domo_rel_t_ent, tb.domo_rel_t_chb_M FROM tb_domotic as tb WHERE tb.domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00';
    et toujours le même résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1054 (42S22): Unknown column 'domo_date' in 'where clause'
    Je ne vois pas d'où ça pourrait venir...

    Si ça peut aider :
    La table tb_domotic :
    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
    mysql> SHOW columns FROM tb_domotic;
    +------------------+----------+------+-----+---------+-------+
    | Field            | Type     | Null | Key | Default | Extra |
    +------------------+----------+------+-----+---------+-------+
    | domo_date        | datetime | NO   | PRI | NULL    |       |
    | domo_rel_wh      | int(11)  | YES  |     | NULL    |       |
    | domo_rel_a       | int(11)  | YES  |     | NULL    |       |
    | domo_rel_p       | int(11)  | YES  |     | NULL    |       |
    | domo_cal_wh_1m   | int(11)  | YES  |     | NULL    |       |
    | domo_cal_wh_15m  | int(11)  | YES  |     | NULL    |       |
    | domo_cal_wh_3h   | int(11)  | YES  |     | NULL    |       |
    | domo_cal_wh_12h  | int(11)  | YES  |     | NULL    |       |
    | domo_cal_wh_1j   | int(11)  | YES  |     | NULL    |       |
    | domo_cal_wh_7j   | int(11)  | YES  |     | NULL    |       |
    | domo_rel_t_ext   | float    | YES  |     | NULL    |       |
    | domo_rel_t_ent   | float    | YES  |     | NULL    |       |
    | domo_rel_t_chb_M | float    | YES  |     | NULL    |       |
    | domo_cal_p_1m    | int(11)  | YES  |     | NULL    |       |
    +------------------+----------+------+-----+---------+-------+
    La table domo_releve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    mysql> SHOW columns FROM domo_releve;
    +----------------+----------+------+-----+---------+-------+
    | Field          | Type     | Null | Key | Default | Extra |
    +----------------+----------+------+-----+---------+-------+
    | domo_rel_date  | datetime | NO   | PRI | NULL    |       |
    | domo_rel_wh    | int(11)  | YES  |     | NULL    |       |
    | domo_rel_a     | int(11)  | YES  |     | NULL    |       |
    | domo_rel_p     | int(11)  | YES  |     | NULL    |       |
    | domo_rel_t_ext | float    | YES  |     | NULL    |       |
    | domo_rel_t_rdc | float    | YES  |     | NULL    |       |
    | domo_rel_t_etg | float    | YES  |     | NULL    |       |
    +----------------+----------+------+-----+---------+-------+

  6. #6
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    Pour tester, j'ai modifié les valeurs de l'intervalle des dates du WHERE et ça a marché (2015-01-28 17:11:00 ald 2015-01-28 17:59:00) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql> INSERT INTO domo_releve ( domo_rel_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_rdc, domo_rel_t_etg ) SELECT tb.domo_date, tb.domo_rel_wh, tb.domo_rel_a, tb.domo_rel_p, tb.domo_rel_t_ext, tb.domo_rel_t_ent, tb.domo_rel_t_chb_M FROM tb_domotic as tb WHERE tb.domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:11:00';
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    Donc ça doit venir des dates, je vais investiguer sur cette voie ....

    Faux espoirs, en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql> INSERT INTO domo_releve ( domo_rel_date, domo_rel_wh, domo_rel_a, domo_rel_p, domo_rel_t_ext, domo_rel_t_rdc, domo_rel_t_etg ) SELECT tb.domo_date, tb.domo_rel_wh, tb.domo_rel_a, tb.domo_rel_p, tb.domo_rel_t_ext, tb.domo_rel_t_ent, tb.domo_rel_t_chb_M FROM tb_domotic as tb WHERE tb.domo_date BETWEEN '2015-01-28 17:14:00' AND '2015-01-28 17:15:00';
    J'ai à nouveau l'erreur...

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut Squale76.

    J'ai déjà eu un problème similaire.
    Est-ce que la colonne "domo_date" est unique, soit dans votre base de données, soit dans votre requête ?

    Il y a quelque chose qui perturbe la reconnaissance des noms de vos colonnes dans la requête.

    La liste des noms de vos colonnes, dans la partie insert (ce qui est entre parenthèse), mettez les entre quote oblique : ` (touche alt gr 7 du clavier).
    Et supprimer aussi dans cette liste, les espaces qui ne servent à rien.

    @+

  8. #8
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    Comme 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    INSERT INTO `domo_releve` (
        `domo_rel_date`,
        `domo_rel_wh`,
        `domo_rel_a`,
        `domo_rel_p`,
        `domo_rel_t_ext`,
        `domo_rel_t_rdc`,
        `domo_rel_t_etg`
    )
    SELECT 
        `tb`.`domo_date`,
        `tb`.`domo_rel_wh`,
        `tb`.`domo_rel_a`,
        `tb`.`domo_rel_p`,
        `tb`.`domo_rel_t_ext`,
        `tb`.`domo_rel_t_ent`,
        `tb`.`domo_rel_t_chb_M`
    FROM 
        `tb_domotic` as `tb` 
    WHERE 
        CAST(`tb`.`domo_date` AS DATETIME) 
    BETWEEN 
        CAST('2015-01-28 17:15:00' AS DATETIME) 
    AND 
        CAST('2015-01-28 17:16:00' AS DATETIME);
    J'ai bien converti les tabulations en espaces, et je vais passer cette requête ce soir en supprimant les retours à la ligne ainsi que les espaces superflus (c’était pour une meilleure lisibilité).
    J'espère que cela fonctionnera, je vous dirais cela ce soir...

    EDIT : toujours pareil avec la requête précédente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1054 - Unknown column 'domo_date' in 'where clause'

  9. #9
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut Squale76

    Pour les noms de tables ou de colonnes, le mieux est de toujours utiliser les caractères ASCII, soit les minuscules, éventuellement des majuscules, des chiffres et le soulignés et rien d'autres (c'est juste un rappel).

    Comme le dit Escartefigue (post #2), soit vous mettez l'alias partout, soit vous ne le mettez pas.
    Ici, vous avez une seule table dans le select, de ce fait, l'alias est inutile.

    Le cast ne vous sert à rien, sauf si la colonne n'est pas du type 'date'.

    Citation Envoyé par Squale76
    Comme ceci ?
    Tu n'es pas obligé de le faire sur toutes les colonnes, mais juste ceux de la partie insert.

    Ou bien comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO `domo_releve` (`domo_rel_date`,`domo_rel_wh`,`domo_rel_a`,`domo_rel_p`,`domo_rel_t_ext`,`domo_rel_t_rdc`,`domo_rel_t_etg`) 
    SELECT domo_date,
           domo_rel_wh,
           domo_rel_a,
           domo_rel_p,
           domo_rel_t_ext,
           domo_rel_t_ent,
           domo_rel_t_chb_M 
    FROM tb_domotic
    WHERE (domo_date BETWEEN '2015-01-28 17:10:00' AND '2015-01-28 17:59:00');
    Il y a un élément perturbateur dans la façon dont vous avez écrit votre requête, mais lequel ?

    Autre possibilité, faire un "commit" avant la requête, mais je pense que cela ne va rien changer.

    J'avais aussi pensé à une faute d'orthographe mais si le select seul fonctionne, ce n'est pas cela.

    Si vous utilisez que des caractères ASCII, même si vous avez un problème de charset, le problème ne doit pas se déclencher, car les caractères ASCII sont communs à tous les charset !

    @+

  10. #10
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    Interressant peut-être, lorsque je lance cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `domo_releve` (`domo_rel_date`,`domo_rel_wh`,`domo_rel_a`,`domo_rel_p`,`domo_rel_t_ext`,`domo_rel_t_rdc`,`domo_rel_t_etg`) 
    VALUES ('2015-01-28 17:15:00',74785403,2,530,NULL,NULL,NULL);
    Donc juste l'INSERT avec des valeurs sans le SELECT, j'obtiens la même erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1054 - Unknown column 'domo_date' in 'where clause'
    Alors que je n'ai aucune clause WHERE dans ma requête ????

    J'ai fais une vérification de la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    root:/usr/home/admin # mysqlcheck --databases domotic --auto-repair --verbose -p
    Enter password:
    # Connecting to localhost...
    domotic.config                                     OK
    domotic.domo_cal_15m                               OK
    domotic.domo_cal_1j                                OK
    domotic.domo_cal_1m                                OK
    domotic.domo_releve                                OK
    domotic.logs                                       OK
    domotic.tb_domotic                                 OK
    # Disconnecting from localhost...
    Et rien

  11. #11
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Vérifiez que vous n'avez pas de trigger sur la table domo_releve, c'est peut-être lui qui déclenche l'erreur

  12. #12
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    J'ai bien un trigger sur domo_releve qui "dispatch" mes releves sur différentes tables :
    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
    BEGIN
    	INSERT INTO `domo_cal_1m` (
            `domo_date`,
            `domo_cal_1m_wh`,
            `domo_cal_1m_t_ext`,
            `domo_cal_1m_t_rdc`,
            `domo_cal_1m_t_etg`,
            `domo_cal_1m_t_p`
        )
        VALUES (
            NEW.`domo_rel_date`,
            getDelta_wh_1m(NEW.`domo_rel_date`, NEW.`domo_rel_wh`),
            NEW.`domo_rel_t_ext`,
            NEW.`domo_rel_t_rdc`,
            NEW.`domo_rel_t_etg`,
            null
        );
     
    	IF (SELECT (MINUTE(NEW.`domo_rel_date`) IN (0, 15, 30, 45)) > 0) THEN 
    		INSERT INTO `domo_cal_15m` (
    			`domo_date`,
    			`domo_cal_15m_wh`, 
    			`domo_cal_15m_t_ext`, 
    			`domo_cal_15m_t_rdc`,
    			`domo_cal_15m_t_etg`, 
    			`domo_cal_15m_t_p`
    		) VALUES (
    			NEW.`domo_rel_date`,
    			getDelta_wh_15m(NEW.`domo_rel_date`, NEW.`domo_rel_wh`),
    			getMoy_T_ext(NEW.`domo_rel_date`, MAKETIME( 00,14,59 )),
    			null,
    			null,
    			null
    		);
    	END IF;
     
    	IF (SELECT (HOUR(NEW.`domo_rel_date`) IN (0) AND MINUTE(NEW.`domo_rel_date`) IN (0)) > 0) THEN 
    		INSERT INTO `domo_cal_1j` (
    			`domo_date`,
    			`domo_cal_1j_wh`, 
    			`domo_cal_1j_t_ext`, 
    			`domo_cal_1j_t_rdc`,
    			`domo_cal_1j_t_etg`, 
    			`domo_cal_1j_t_p`
    		) VALUES (
    			NEW.`domo_rel_date`,
    			getDelta_wh_1j(NEW.`domo_rel_date`, NEW.`domo_rel_wh`),
    			getMoy_T_ext(NEW.`domo_rel_date`, MAKETIME( 23,59,59 )),
    			null,
    			null,
    			null
    		);
    	END IF;		
    END
    Et voici mes tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mysql> SHOW columns FROM domotic.domo_cal_1m;
    +-------------------+----------+------+-----+---------+-------+
    | Field             | Type     | Null | Key | Default | Extra |
    +-------------------+----------+------+-----+---------+-------+
    | domo_date         | datetime | NO   | PRI | NULL    |       |
    | domo_cal_1m_wh    | int(11)  | YES  |     | NULL    |       |
    | domo_cal_1m_t_ext | float    | YES  |     | NULL    |       |
    | domo_cal_1m_t_rdc | float    | YES  |     | NULL    |       |
    | domo_cal_1m_t_etg | float    | YES  |     | NULL    |       |
    | domo_cal_1m_t_p   | int(11)  | YES  |     | NULL    |       |
    +-------------------+----------+------+-----+---------+-------+
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mysql> SHOW columns FROM domotic.domo_cal_15m;
    +--------------------+----------+------+-----+---------+-------+
    | Field              | Type     | Null | Key | Default | Extra |
    +--------------------+----------+------+-----+---------+-------+
    | domo_date          | datetime | NO   | PRI | NULL    |       |
    | domo_cal_15m_wh    | int(11)  | YES  |     | NULL    |       |
    | domo_cal_15m_t_ext | float    | YES  |     | NULL    |       |
    | domo_cal_15m_t_rdc | float    | YES  |     | NULL    |       |
    | domo_cal_15m_t_etg | float    | YES  |     | NULL    |       |
    | domo_cal_15m_t_p   | int(11)  | YES  |     | NULL    |       |
    +--------------------+----------+------+-----+---------+-------+
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mysql> SHOW columns FROM domotic.domo_cal_1j;
    +-------------------+----------+------+-----+---------+-------+
    | Field             | Type     | Null | Key | Default | Extra |
    +-------------------+----------+------+-----+---------+-------+
    | domo_date         | datetime | NO   | PRI | NULL    |       |
    | domo_cal_1j_wh    | int(11)  | YES  |     | NULL    |       |
    | domo_cal_1j_t_ext | float    | YES  |     | NULL    |       |
    | domo_cal_1j_t_rdc | float    | YES  |     | NULL    |       |
    | domo_cal_1j_t_etg | float    | YES  |     | NULL    |       |
    | domo_cal_1j_t_p   | int(11)  | YES  |     | NULL    |       |
    +-------------------+----------+------+-----+---------+-------+

  13. #13
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Alors je crois qu'on avance !

    il faudrait le code des différentes fonctions auxquelles il fait appel, mais l'erreur vient surement de l'une d'elle.

    (si vous êtes sur une base de test, vous pouvez désactiver le trigger et retenter une des insertions qui échouaient, pour confirmer que c'est le trigger qui est en cause)

  14. #14
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut aieeeuuuuu.

    Si le trigger est en place depuis longtemps, Squale76 se serait aperçu d'un quelconque problème.

    Il faut faire une recherche sur la totalité de la base de données et voir où est utilisé (ou pas) la colonne 'domo_date'.
    Avez-vous modifié dernièrement une de vos tables ou je ne sais quoi d'autres dans votre base ?

    @+

  15. #15
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    Trigger désactivé cette requête a aussi fonctionné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO `domo_releve` (`domo_rel_date`,`domo_rel_wh`,`domo_rel_a`,`domo_rel_p`,`domo_rel_t_ext`,`domo_rel_t_rdc`,`domo_rel_t_etg`) 
    SELECT domo_date,
           domo_rel_wh,
           domo_rel_a,
           domo_rel_p,
           domo_rel_t_ext,
           domo_rel_t_ent,
           domo_rel_t_chb_M 
    FROM tb_domotic
    WHERE (domo_date BETWEEN '2015-01-28 17:15:00' AND '2015-01-28 17:20:00');
    On s'approche...

  16. #16
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut Squale76.

    Et la requête d'origine, celle qui pose problème, est-ce qu'elle fonctionne normalement avec les triggers désactivés ?

    @+

  17. #17
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    La requête d'origine fonctionne bien si le trigger est desactivé, dés que je le réactive, j'ai à nouveau l'erreur.

    Pour situer ce que je faisais, j'ai une base domotic qui est remplie de données relevées et des données calculées. J'ai besoin "d'éclater" ces données dans plusieurs tables. J'ai donc créé plusieurs tables :
    • domo_releve (tables correspondant aux relevés bruts ayant pour clé primaire domo_date)
    • domo_cal_1m (tables correspondant aux relevés calculés ayant pour clé primaire domo_date)
    • domo_cal_15m (tables correspondant aux relevés calculés ayant pour clé primaire domo_date)
    • domo_cal_1j (

    tables correspondant aux relevés calculés ayant pour clé primaire domo_date)

    J'ai donc créé un trigger qui "dispatch" les données brutes dans chaque table en fonction de leur horodatage.

    J'aurai voulu récupéré les données qui ont été déjà enregistrées dans la table tb_domotic (où toutes les données étaient brutes et calculées) par insert de la table tb_domotic vers domo_releve.
    Lors de l'insert le trigger calculerait et dispatcherait mes données dans les différentes tables.

    J'espère être clair...

  18. #18
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Dans la première requete de la fonction getDelta_wh_15m, vous avez
    WHERE `domo_rel_date` < dtDate AND MINUTE(`domo_date`) IN (0, 15, 30, 45);.

    je pense que ça serait plutôt :
    WHERE `domo_rel_date` < dtDate AND MINUTE(`domo_rel_date`) IN (0, 15, 30, 45);

  19. #19
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Par défaut
    Super, c'est ça, je comprends mieux maintenant pourquoi le plantage se faisait lorsque la requête d'insert avait une date avec des minutes égale à 15.

    Un grand MERCI à tous.

    Désolé pour le retard d'information, j'aurai dû vous parler de ce trigger et ces fonctions.

    encore

  20. #20
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut Squale76.

    Tu parles de trigger mais dans ton message (post #19), tu nous donnes des fonctions.
    Et tu confirmes que la remarque de aieeeuuuuu est la solution à ton problème.

    Mais nous n'avons pas vu dans tes premiers messages, une quelconque relation entre ton problème et tes fonctions.
    Dans quels cas tu les utilises ?

    Aurais-tu par hasard fait un appel à tes fonctions dans des triggers ?
    A moins de me tromper, une fonction s'utilise dans des requêtes (select, insert, update) et non en cascade dans des procédures ou des triggers.

    @+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] "erreur : Unknown column 'genre18' in 'field list'
    Par neotux56 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2013, 12h47
  2. [MySQL] requete inexacte ? "erreur : Unknown column '$prix' in 'field list'"
    Par hotman1313 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/03/2012, 22h37
  3. Erreur "Unknown column" dans un JOIN sous MySQL 5.0
    Par bibiloute dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/04/2006, 09h16
  4. erreur mysql Unknown column...
    Par italiasky dans le forum Requêtes
    Réponses: 9
    Dernier message: 08/02/2006, 10h26
  5. Unknown column sur un INSERT
    Par jexl dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/10/2005, 00h28

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