Maison  >  Article  >  base de données  >  Comment activer la troncature des données dans MySQL sans générer d'erreurs ?

Comment activer la troncature des données dans MySQL sans générer d'erreurs ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 13:03:30678parcourir

How to Enable Data Truncation in MySQL without Generating Errors?

Troncation des données MySQL et gestion des erreurs

Dans MySQL, la gestion des données qui dépassent les limites de longueur de colonne peut varier d'une instance à l'autre. Dans certains cas, les données excessives sont tronquées sans générer d’erreurs, tandis que dans d’autres, une erreur est générée. Cette question explore le paramètre MySQL qui permet la troncature des données dans des scénarios spécifiques.

Énoncé du problème :

Deux instances MySQL présentent un comportement différent lors de l'insertion de données dépassant la longueur autorisée : l'un tronque les données, tandis que l'autre génère une erreur. La question cherche une solution pour modifier l'instance errante afin de tronquer également les données.

Solution :

Pour activer la troncature automatique des longues chaînes lors de l'insertion de données, MySQL propose les paramètres suivants :

  • STRICT_TRANS_TABLES : Contrôle le comportement de troncature au sein d'une transaction.
  • STRICT_ALL_TABLES : Contrôle le comportement de troncature dans toutes les tables.

La désactivation de ces paramètres permet à MySQL de tronquer automatiquement les chaînes insérées, résolvant ainsi la différence de comportement entre les deux instances.

Extrait de la documentation MySQL :

"Le mode strict contrôle la façon dont MySQL gère les valeurs invalides ou manquantes dans les instructions de modification de données telles que INSERT ou UPDATE... Une valeur peut être invalide pour plusieurs raisons. Par exemple, elle peut avoir un type de données incorrect pour la colonne, ou elle peut être hors plage. Une valeur est manquante lorsqu'une nouvelle ligne à insérer ne contient pas de valeur pour une colonne non NULL qui n'a pas de clause DEFAULT explicite dans sa définition."

Référence :

  • [Modes SQL du serveur MySQL](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn