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

  1. #1
    Candidat au Club
    Identifiant auto-incrémenté qui reste à 0
    Bonjour, je suis débutant en développement web, j'ai créé une base de donnée sur MYSQL avec deux tables. le soucis est que lorsque j'enregistre des données dans une table l'identifiant reste 0 or j'ai coché auto_incrémente. Aidez moi SVP.

  2. #2
    Expert éminent sénior
    Bonjour,

    Faute de boule de cristal en état de fonctionner, merci de communiquer le script de création de vos tables ainsi que la requête en question

  3. ###raw>post.musername###
    Candidat au Club
    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
    create TABLE `categories` (
      `id` int(20) NOT NULL,
      `created_at` datetime NOT NULL,
      `updated_at` datetime NOT NULL,
      `code` text,
      `name` text,
      `name_en` text,
      `name_fr` text,
      `fk_parent_category` bigint(20) DEFAULT NULL
    ) 
     
    --
    -insert data for table `categories`
    --
    INSERT INTO `categories` ( `created_at`, `updated_at`, `code`, `name`, `name_en`, `name_fr`, `fk_parent_category`) VALUES
    ( '2019-01-07 17:34:57', '2019-01-07 17:34:57', NULL, NULL, 'Title Ii - Tax Recovery', 'Titre II - Le recouvrement de l\'impot', 14),
    ( '2019-01-07 17:34:57', '2019-01-07 17:34:57', NULL, NULL, 'Title II - Tax Recovery', 'Titre II - Le recouvrement de l\'impot', 1613),
    ( '2019-01-07 17:34:57', '2019-01-07 17:34:57', NULL, NULL, 'Title II - Tax Recovery', 'Titre II - Le recouvrement de l\'impot', 1623);
      0  0

  4. ###raw>post.musername###
    Membre actif
    Votre table ne dispose pas de colonne auto_increment
    Bien choisir les types de colonnes appropriés.
    Exemple : assignez le type varchar sur code, name, name_en, name_fr tout en spécifiant la taille maximale de caractères.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create TABLE categories (
    id bigint auto_increment primary key,
    created_at datetime NOT NULL,
    updated_at datetime NOT NULL,
    code varchar(50),
    name varchar(100),
    name_en varchar(100),
    name_fr varchar(100),
    fk_parent_category bigint DEFAULT NULL
    );


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO categories ( created_at, updated_at, code, name, name_en, name_fr, fk_parent_category) VALUES
    ( '2019-01-07 17:34:57', '2019-01-07 17:34:57', NULL, NULL, 'Title Ii - Tax Recovery', 'Titre II - Le recouvrement de l\'impot', 14),
    ( '2019-01-07 17:34:57', '2019-01-07 17:34:57', NULL, NULL, 'Title II - Tax Recovery', 'Titre II - Le recouvrement de l\'impot', 1613),
    ( '2019-01-07 17:34:57', '2019-01-07 17:34:57', NULL, NULL, 'Title II - Tax Recovery', 'Titre II - Le recouvrement de l\'impot', 1623);
      2  0

  5. #5
    Expert éminent sénior
    Citation Envoyé par manzeki Voir le message
    Bien choisir les types de colonnes appropriés.
    Exemple : assignez le type varchar sur code
    En l'occurrence, du varchar pour un code est rarement un bon choix : les codes étant le plus souvent de longueur maximale très courte et souvent tous de la même longueur, choisir du varchar est contre-performant, le char est préférable.

    Exemples :
    - codes pays iso 3166 : 3 normes char(2), char(3) et numérique(3) cf. https://fr.wikipedia.org/wiki/ISO_3166
    - codes devises iso 4217 : char(3) cf. https://fr.wikipedia.org/wiki/ISO_4217
    - codes incoterm de port : char(3) cf. https://fr.wikipedia.org/wiki/Incoterm
    - codes communes insee : char(5) cf. https://public.opendatasoft.com/expl.../table/?flg=fr
    etc

    Pour rappel
    - le varchar nécessite, selon les SGBD et la longueur maximale de l'attribut, 1 à 3 octets supplémentaires pour stocker la longueur effective, au contraire du char.
    - le varchar provoque des déplacement de pages data et index lors des mises à jour avec modification de la longueur, ce qui pénalise les performances
    - le varchar requiert un réalignement avant tri (order by, distinct, group by) ce qui pénalise aussi les performances

    Donc le varchar, c'est très bien, mais il ne faut pas l'utiliser systématiquement au détriment du char
    - attribut de longueur maximale réduite (moins de 20 caractères ~) ou dont la longueur effective ne varie pas ou très peu ==> préférer le char, quelques blancs inutiles coutent moins cher que des déplacements de pages data et index
    - attribut de longueur maximale significative et dont la longueur varie fortement d'une ligne à l'autre ==> préférer le varchar

    Pour le reste je suis d'accord