Project

General

Profile

Actions

Bug #11

open

Erreur SQL "Column 'prix_special' cannot be null" lors de l'ajout d'un nouveau produit sans promotion.

Added by UserName LastName 10 months ago. Updated 9 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Start date:
05/13/2025
Due date:
% Done:

0%

Estimated time:

Description

Description :

Étapes pour reproduire le problème :

  1. Se connecter à l'interface d'administration.
  2. Naviguer vers "Produits" > "Ajouter un nouveau produit".
  3. Remplir tous les champs obligatoires (nom, description, prix normal, stock).
  4. Laisser les champs relatifs à la promotion (prix spécial, date début/fin promotion) vides.
  5. Cliquer sur le bouton "Enregistrer le produit".

Résultat attendu :
Le nouveau produit devrait être créé avec succès, sans informations de promotion.

Résultat observé (actuel) :
Une page d'erreur s'affiche (ou un message d'erreur apparaît en haut de la page de formulaire). Le produit n'est pas créé.

Message d'erreur exact affiché :
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'prix_special' cannot be null (SQL: insert into produits (nom, description, prix_normal, stock, prix_special, ...) values (Test Produit, ..., 99.99, 10, ?, ...))

Actions #3

Updated by UserName LastName 9 months ago

J'ai effectué les modifications et tout est en ordre.

Actions #5

Updated by UserName LastName 9 months ago

Une explication détaillée de la requête SQL ALTER TABLE produits MODIFY COLUMN prix_special DECIMAL(10,2) NULL;:

1. ALTER TABLE produits

  • ALTER TABLE: C'est une instruction SQL qui permet de modifier la structure d'une table existante.
  • produits: C'est le nom de la table que vous souhaitez modifier. Dans ce cas, vous modifiez la table nommée produits. Cette table est présumée exister déjà dans votre base de données.

2. MODIFY COLUMN prix_special DECIMAL(10,2) NULL

  • MODIFY COLUMN: Cette clause de ALTER TABLE indique que vous allez modifier la définition d'une colonne existante.
  • prix_special: C'est le nom de la colonne que vous voulez modifier. Cette colonne doit déjà exister dans la table produits.
  • DECIMAL(10,2): C'est le nouveau type de données que vous attribuez à la colonne prix_special. Plus précisément :
    • DECIMAL: C'est un type de données numérique à virgule fixe. Il est utilisé pour stocker des nombres avec une précision exacte, contrairement aux types FLOAT ou DOUBLE qui peuvent avoir des erreurs d'arrondi.
    • (10,2): Définit la précision et l'échelle du nombre.
      • 10 représente la précision totale du nombre, c'est-à-dire le nombre total de chiffres (avant et après la virgule).
      • 2 représente l'échelle, c'est-à-dire le nombre de chiffres après la virgule.
      • Par conséquent, DECIMAL(10,2) peut stocker des nombres allant de -99999999.99 à 99999999.99.
  • NULL: Ceci définit la possibilité pour la colonne de contenir des valeurs nulles (c'est-à-dire des valeurs absentes ou inconnues). En d'autres termes, NULL signifie que la colonne prix_special peut avoir une valeur vide pour certaines lignes de la table produits. Si la colonne était définie comme NOT NULL précédemment, cette commande permettrait d'autoriser des valeurs NULL. Si elle était déjà NULL, elle reste NULL.

En résumé :

La requête ALTER TABLE produits MODIFY COLUMN prix_special DECIMAL(10,2) NULL; modifie la table produits en changeant le type de données de la colonne prix_special en DECIMAL(10,2) (un nombre décimal avec 10 chiffres au total, dont 2 après la virgule) et en autorisant la colonne à contenir des valeurs NULL.

Points importants à considérer avant d'exécuter cette requête:

  • Perte de données potentielle: Si la colonne prix_special contenait auparavant des valeurs avec plus de deux décimales, vous risquez de perdre la partie décimale excédentaire lors de la conversion au type DECIMAL(10,2). Il est crucial de vérifier les données existantes avant d'exécuter cette requête.
  • Contraintes existantes: Assurez-vous qu'aucune contrainte (par exemple, des clés étrangères) ne dépend du type de données actuel de la colonne prix_special. La modification du type de données pourrait casser ces contraintes.
  • Sauvegarde: Il est fortement recommandé de faire une sauvegarde de votre table produits avant d'exécuter une requête ALTER TABLE. En cas de problème, vous pourrez ainsi restaurer la table à son état précédent.
  • Impact sur les applications: Vérifiez si les applications qui utilisent cette table sont compatibles avec le nouveau type de données. Vous devrez peut-être modifier le code de ces applications.

En résumé, cette requête est relativement simple, mais il est important de l'exécuter avec précaution en tenant compte des points ci-dessus afin d'éviter des problèmes de données ou de fonctionnement de vos applications.

Actions

Also available in: Atom PDF