Liste des articles pour le tag : MySql
Doctrine - cohérence du charset
Sur un projet professionnel, j'ai été confronté à deux erreurs qui m'ont donné beaucoup de fil à retordre et je souhaite, ici, faire un retour d'expérience à ce sujet.
Contexte
Il s'agit d'un environnement ZendFramework couplé à Doctrine.
Plus précisément, on se trouve dans un service ZendAmf.
Le service en question expose une méthode permettant de changer son mot de passe.
Pour changer le mot de passe, j'utilise le code suivant :
$user = Doctrine::getTable('User')->findOneByEmail($email); $user->password = $newPassword; $user->save();
Et là, c'est le drame : le serveur MySQL me renvoi l'erreur suivante :
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
MySQL : modification de l'encodage de la connexion
Il arrive malheureusement trop souvent que l'on doive traiter avec des bases de données qui ne sont pas encodées en UTF8.
Et lorsque l'on souhaite récupérer les données, on se retrouve avec plein de caractères bizarres comme : é en lieu et place des caractères accentués (é dans le cas présent).
Un remède consiste à modifier l'encodage de la connexion au serveur MySql :
SET NAMES 'latin1';
MySQL InnoDB FOREIGN KEY CHECK
Afin d'effacer rapidement les donnée d'une base InnoDB sans se soucier des clef étrangères on pourra utiliser :
SET FOREIGN_KEY_CHECKS = 0;