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 :

#1054 - Unknown column 'created_at' in 'field list'


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 15
    Points
    15
    Par défaut #1054 - Unknown column 'created_at' in 'field list'
    Bonjour à tous,

    J'utilise directement cette requête dans phpMyadmin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO area(`id`,`family_id`, `group_id`, `poi_id`, `wps_id`, `number_places`, `disponibility`, `created_at`, `updated_at`, `cms_updated_at`, `cms_object_id`, `ccp`)
    VALUES (101, 3, 123, 110, NULL, 50, 50, '2016-05-01', '2016-05-01', NULL, NULL, 0)
    et j'obtiens le message d'erreur suivant : #1054 - Unknown column 'created_at' in 'field list'

    Le champ en question existe bien, la base de données existe depuis 3 ans au moins. Le champ created_at est du type Datetime. Il ne peut pas prendre la valeur Null et n'a pas de valeur par défaut.

    J'ai essayé sans les quotes inversées autour des noms de colonnes, c'est pareil. J'ai remplacé la valeur '2016-05-01' par la fonction NOW() et par CURDATE() et j'ai le même message d'erreur.

    J'ai également essayé avec juste le INSERT INTO area VALUES (....) et j'ai le même message d'erreur.

    J'ai visité divers sites et forums en français et anglais maie rien trouvé du tout qui résolve mon problème.

    Si quelqu'un avait une idée lumineuse ce serait cool.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Faîtes un desc area pour voir le nom des colonnes.
    Il est possible qu'il faille respecter la casse du nom de colonne en fonction de l'OS.

  3. #3
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Avez vous un trigger sur la table area ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Faîtes un desc area pour voir le nom des colonnes.
    Il est possible qu'il faille respecter la casse du nom de colonne en fonction de l'OS.
    Merci pour la proposition.

    Je viens de faire un desc area et j'obtiens cela
    Nom : Desc table area.PNG
Affichages : 2006
Taille : 37,1 Ko

    Tous les noms de colonne sont en lettres minuscules, comme dans mon insert

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Avez vous un trigger sur la table area ?
    Bonjour et merci pour cette question

    J'ai effectivement 2 triggers. Le premier se déclenche après l'Insert et le 2e se déclenche après l'Update. Cela pourrait venir de là ?

  6. #6
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    oui, l'erreur est peut-être dans le trigger INSERT, qui contient une commande incorrecte, mentionnant une colonne created_at dans une autre table (qui n'a pas une telle colonne)

    quel est le contenu du trigger ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    oui, l'erreur est peut-être dans le trigger INSERT, qui contient une commande incorrecte, mentionnant une colonne created_at dans une autre table (qui n'a pas une telle colonne)

    quel est le contenu du trigger ?
    Voici le contenu du trigger qui se déclenche sur l'insert
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DROP TRIGGER IF EXISTS `ccp_to_cac_insert_area`//
    CREATE TRIGGER `ccp_to_cac_insert_area` AFTER INSERT ON `area`
     FOR EACH ROW INSERT INTO `recette_cac`.cac_area (`id`,`city`, `country`, `status`, `reservation`, `automaton`, `ccp`, `address`, `nb_place`, `nb_available_place`, `state`, `created_at`) 
                SELECT `symfony-recette`.area.id, `symfony-recette`.interest_point.city, `symfony-recette`.interest_point.country, 1, 0, 1, 1, `symfony-recette`.interest_point.address1, `symfony-recette`.area.number_places, `symfony-recette`.area.disponibility, 1, NOW() FROM `symfony-recette`.area LEFT JOIN `symfony-recette`.interest_point ON `symfony-recette`.area.poi_id = `symfony-recette`.interest_point.id 
            ON DUPLICATE KEY UPDATE `recette_cac`.cac_area.city = `symfony-recette`.interest_point.city, `recette_cac`.cac_area.country = `symfony-recette`.interest_point.country, `recette_cac`.cac_area.address = `symfony-recette`.interest_point.address1, `recette_cac`.cac_area.nb_place = `symfony-recette`.area.number_places, `recette_cac`.cac_area.nb_available_place = `symfony-recette`.area.disponibility
    //

    et voici la description de la table cac_area
    Nom : Desc table cac_area.PNG
Affichages : 2038
Taille : 69,6 Ko

    Je me demande si cela ne vient pas du fait que dans la requête la colonne semble être created_at alors que la structure de la table indique createdAt

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    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 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut Jeandu44.

    Il y a des choses qui ne vont pas dans votre insert.

    1) pourquoi mettez-vous une valeur pour la colonne "id" ?
    C'est un auto incrément, donc laissez MySql se débrouiller tout seul.
    Le mieux est de ne pas référencer la colonne 'id' dans votre insert.

    2) en ce qui concerne vos deux colonnes `created_at`, `updated_at` dans la table "area", on ne les gère pas comme vous le faite.
    Ces deux colonnes sont renseignées automatiquement par mysql, quand un utilisateur intervient soit à l'insertion, soit en modification sur la ligne.
    Ces deux colonnes sont techniques à MySql, et en principe, vous ne devez pas intervenir dessus.
    Elles servent soit pour faire de l'archivage, soit en tant que mouchard, pour connaitre le user qui est intervenu sur la ligne et à quelle date+heure.

    La bonne façon de les déclarer est dans l'exemple ci-après :
    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
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    (
      `id`            integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `val`           varchar(255)     NOT NULL,
      `created_at`    datetime default current_timestamp,
      `updated_at`    datetime default current_timestamp on update current_timestamp
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `test` (`val`) VALUES ('un')
    --------------
     
    --------------
    select * from test
    --------------
     
    +----+-----+---------------------+---------------------+
    | id | val | created_at          | updated_at          |
    +----+-----+---------------------+---------------------+
    |  1 | un  | 2016-05-02 13:42:53 | 2016-05-02 13:42:53 |
    +----+-----+---------------------+---------------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    La colonne "created_at" est renseigné avec la même valeur que la colonne "updated_at".

    Et voici l'exemple de la modification de la ligne.
    J'ai remplacé la valeur de la colonne "val" de "un" par "deux".
    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
     
    --------------
    update test set val = 'deux' where id = 1
    --------------
     
    --------------
    select * from test
    --------------
     
    +----+------+---------------------+---------------------+
    | id | val  | created_at          | updated_at          |
    +----+------+---------------------+---------------------+
    |  1 | deux | 2016-05-02 13:42:53 | 2016-05-02 13:43:34 |
    +----+------+---------------------+---------------------+
     
    Appuyez sur une touche pour continuer...
    Seul la colonne "updated_at" a changé. Pas la colonne "created_at".
    Et vous avez remarqué que je n'ai fait aucune référence dans l'insert, ni à la colonne "id", ni à la colonne "created_at", ni à la colonne "updated_at".

    En ce qui concerne votre problème avec la colonne "created_at", il y a quelque chose qui perturbe mysql, mais quoi ?
    Vu que la table "area" existe depuis trois ans, elle n'est pas en cause.

    Par contre, je pense avoir trouvé votre problème.
    Dans le trigger, lors de l'insertion (le insert) dans la table "recette_cac.cac_area", vous déclarez comme nom de colonne "created_at".
    Or dans le descriptif de la table, la colonne se nomme "createdAt", sans le souligné et avec une majuscule.

    Selon votre dictionnaire des données, vous faites une erreur de conception.
    Vous devez orthographier toujours de la même façon la colonne qui joue un rôle particulier dans toute votre base de données.
    En changeant l'orthographe de cette colonne, c'est comme si vous définissez un autre rôle.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  9. #9
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Points : 15
    Points
    15
    Par défaut
    Merci pour toutes ces précieuses information. C'est bien effectivement le createdAt qui semait la panique. Cela fonctionne correctement maintenant.

    Pour le reste je vais l'appliquer de ce pas.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. #1054 - Unknown column 'Natation-Vélo' in 'field list'
    Par 69Pierre dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/10/2015, 18h24
  2. [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, 13h47
  3. [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, 23h37
  4. 1054 - Unknown column 'L' in 'field list'
    Par Pacman23 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 05/10/2009, 11h12
  5. 1054 - Unknown column 'language_id' in 'where clause'
    Par Tonio_17000 dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/06/2009, 23h01

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