Partage
  • Partager sur Facebook
  • Partager sur Twitter

Valeur par défaut non respectée

Sujet résolu
25 août 2019 à 15:07:22

Bonjour,

J'ai une ligne dans ma base de données "int" (celle ci ne doit recevoir que des chiffres). J'ai mis la valeur par défaut à "aucune" et pourtant, cela m'affiche "0" par défaut.

Avez-vous une idée du problème ?

Merci


  • Partager sur Facebook
  • Partager sur Twitter
25 août 2019 à 23:18:47

oui, c'est un entier, pourquoi ?
  • Partager sur Facebook
  • Partager sur Twitter
25 août 2019 à 23:35:55

La valeur par défaut n'est pas utilisée à l'affichage (SELECT) mais à l'insertion (ou autre éventuellement avec l'emploi du mot-clé DEFAULT).

Ou tu as utilisé la chaîne "aucune" comme valeur par défaut (et qui après cast donnerait 0) ?

  • Partager sur Facebook
  • Partager sur Twitter
25 août 2019 à 23:59:05

Sur la structure de ma table, j'ai mis la valeur "aucune". Je n'ai mis aucune fonction CAST.

Mon script pour créer la ligne :

$requete = "INSERT INTO orgue(date, id_utilisateur, categorie) VALUES('".date("Y-m-d")."','$id_utilisateur','$destination')";


-
Edité par davidkings 26 août 2019 à 0:00:31

  • Partager sur Facebook
  • Partager sur Twitter
26 août 2019 à 9:54:00

Bonjour,

Je suppose que la colonne en question est aussi définie NOT NULL ... non ?

De ce fait, à l'insertion, lorsque aucune valeur n'est précisée pour cette colonne, MySQL met une valeur INT par défaut, à savoir 0 ...

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
26 août 2019 à 12:04:58

davidkings a écrit:

oui, c'est un entier, pourquoi ?


Ce que je voulais te faire remarquer, c'est tu définis une colonne comme "hébergeant" des nombres entier, mais qu'apparemment tu voudrais qu'elle prenne comme valeur une chaîne de caractères vide, c'est contradictoire.
  • Partager sur Facebook
  • Partager sur Twitter
26 août 2019 à 12:56:58

Benzouye a écrit:

Bonjour,

Je suppose que la colonne en question est aussi définie NOT NULL ... non ?

De ce fait, à l'insertion, lorsque aucune valeur n'est précisée pour cette colonne, MySQL met une valeur INT par défaut, à savoir 0 ...


Effectivement, NULL = NON  mais je n'ai pas accès à la modification du paramètre.
 


philodick a écrit:

Ce que je voulais te faire remarquer, c'est tu définis une colonne comme "hébergeant" des nombres entier, mais qu'apparemment tu voudrais qu'elle prenne comme valeur une chaîne de caractères vide, c'est contradictoire.


Ca veut dire que pour INT, il ne peut pas rien y avoir ?

-
Edité par davidkings 26 août 2019 à 13:06:55

  • Partager sur Facebook
  • Partager sur Twitter
26 août 2019 à 13:22:25

davidkings a écrit:

Ca veut dire que pour INT, il ne peut pas rien y avoir ?

Une chaîne de caractères vide et NULL sont deux choses différentes. Toute colonne, quel que soit son type peut être NULL ce qui signifie "absence de valeur". Une colonne de type entier (INT) peut être NULL. Mais lui donner comme valeur une chaîne de caractères vide ou la chaîne "aucune" sera converti en 0 par MySQL lors de l'insertion.

davidkings a écrit:

Effectivement, NULL = NON

Ta table n'accepte donc pas que cette colonne n'ait pas de valeur, il faut corriger cela si c'est ce dont tu as besoin ...

davidkings a écrit:

je n'ai pas accès à la modification du paramètre

Pourquoi ? Tu n'es pas administrateur de la base ?

Au pire tu peux faire cela en SQL :

ALTER TABLE ma_table
    ALTER COLUMN ma_column INT NULL;

-
Edité par Benzouye 26 août 2019 à 13:23:07

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
26 août 2019 à 13:58:32

Merci Benzouye pour cette explication très claire. J'ai essayé, ça marche ! :)
  • Partager sur Facebook
  • Partager sur Twitter