SQL ignore error SQLSTATE avec sql-mode

1012825 vues
27 octobre 2011
Joachim
sqldatabasewithlogo

 

Le SQL Mode est un paramètre du serveur de base de données MySQL qui définit la syntaxe et le comportement du langage SQL utilisé pour interagir avec la base de données.

Le SQL Mode détermine les règles d'exécution de certaines commandes SQL, telles que le comportement de la commande INSERT en cas de valeur nulle dans une colonne, la façon dont les valeurs sont comparées, triées et encodées, ainsi que la gestion des erreurs et des avertissements. Il permet également de spécifier la façon dont les chaînes de caractères et les dates sont interprétées et affichées.

Le SQL Mode peut être modifié pour répondre aux besoins spécifiques d'une application. Par exemple, certains modes peuvent être activés pour garantir la compatibilité avec des versions antérieures de MySQL ou pour activer des fonctionnalités de sécurité supplémentaires.

Le SQL Mode peut être configuré au niveau de la session, de la connexion ou du serveur entier en modifiant la valeur de la variable système "sql_mode". Les valeurs possibles du SQL Mode sont définies dans la documentation de MySQL et varient en fonction de la version du serveur de base de données utilisée.

On peut parfois être amené à travailler sur des bases de données pas toujours très clean (reprise d'un projet). Si vous partez alors sur une install de mysql banale avec un mysql Server, vous pouvez vous retrouver avec des requêtes qui ne s'exécutent plus avec succès, et un programme qui ne fonctionne plus, avec des messages d'erreurs dans vos logs qui indiquent: PHP Warning:  PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY000]: General error: 1364 Field 'myfield' doesn't have a default value in mon_chemin\toto.php on line 124

 Cas n°1: vous corrigez la base de données (bon courage)

Cas n°2: vous devez uniquement effectuer quelques petites modifs, vous n'avez pas le temps de reprendre la base de données. Il faut donc que les erreurs de type SQLSTATE ne soient pas bloquantes, même si ce n'est pas très propre. Il vous faut tout simplement modifier la variable sql-mode. Vous pouvez juste mettre:

sql-mode="";

et les erreurs SQLSTATE ne seront plus bloquantes.

 

Soirée CMS open-source en PHP
Plugin merge css/js pour Joomla
Créer un QR Code en PHP
Eclipse: Failed to create Java Virtual Machine
Hover sur Slideshow avec jmpress.js
Ajout d’un suffixe aux tables des modèles
I love jQuery.ValidationEngine
Mettre son placeholder en couleur noire #000
Calcul dates à partir du numéro de semaine en PHP
RDV AFUP sur les bases de données relationnelles
Du code et des hommes. Stratégies de suivi de projet
Mise en place d'une API REST en PHP
Pulsar sort son jeu gratuit en ligne
Choisir son outil de gestion de projet web
Soirée design pattern et anti pattern en PHP
Debugger en PHP
Connexion à Office 365 en PowerShell
design-pattern et anti-pattern en PHP
encoder en latin1
Conversion d'un fichier CSV utf8
Le forum PHP c'est dans 2 semaines !
forum php 2014 : le retour de Drupal annoncé... vraiment ???
OWF: Open World Forum
The requested URL was not found on this server.
bug fireEvent dans core.js sous IE9
Maximum execution time ...
Autocomplétion avec Eclipse PDT
Modifier la config Apache pour un site sur PLESK
ZF : Cannot refresh row as parent is missing
Un nouveau routeur pour Joomla!
PHP Tour de Lille
3 nouvelles extensions Joomla! de Pulsar dans la JED
Création de l'antenne parisienne de l'AFUP
Code et calendrier de l'avent, un crossover sympa
Pulsar developpe la passerelle Joomla LUCENE SOLR
Mon nouveau jeu de stratégie en ligne: Xsword
PHP multi-versions sur le même Apache
Journée du conseil scientifique de l'AFNIC
CssJsCompress: page blanche, problème d'encodage
Réseau social d'entreprise: Yammer ou SharePoint?
Le forum PHP 2012....c'est du passé ! RDV l'année prochaine
Astuces PHP lazy load sous joomla seblod warp
Utiliser NOW() de SQL avec ZF