2 votes

Lors de l'insertion d'une valeur décimale hors de l'intervalle, MySQL insère une valeur 99999 au lieu d'envoyer une erreur hors de l'intervalle.

J'ai un schéma de test comme suit :

CREATE DATABASE TEST;

USE TEST;

CREATE TABLE TEST(DEC_VALUE DECIMAL(5,2));

INSERT INTO TEST VALUES(111111);

Mais le problème est qu'au lieu d'envoyer une erreur, MySQL insère normalement mais avec une valeur de 99999,99.

Je sais que l'insertion erronée est due au fait que les données sont plus grandes que le type de données, mais que dois-je changer pour que MySQL lance un message d'erreur de type Error 1264: Out of range au lieu du mauvais insert ?

Merci !

1voto

Paul Spiegel Points 15506

Vous devez activer le TABLES_TRANS_ STRICTES Mode SQL.

Voir : Configuration du mode SQL

Pour définir le mode SQL au démarrage du serveur, utilisez la commande --sql-mode="modes" sur la ligne de commande, ou sql-mode="modes" dans un fichier d'options tel que my.cnf (systèmes d'exploitation Unix) ou my.ini (Windows). modes est une liste de modes différents séparés par des virgules. Pour effacer le mode SQL explicitement, donnez-lui la valeur d'une chaîne vide à l'aide de la commande --sql-mode="" sur la ligne de commande, ou sql-mode="" dans un fichier d'options.

Je le changerais en my.cnf (ou my.ini sur Windows). Il suffit d'ajouter ,STRICT_TRANS_TABLES

mode="...,STRICT_TRANS_TABLES"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X