Requêtes inter-bases de données insensibles à la casse : MySQL et Postgres
Problème :
Développements l'utilisation de MySQL et le déploiement sur Heroku, qui utilise Postgres, conduisent à un comportement incohérent dans les instructions LIKE insensibles à la casse où Heroku applique la sensibilité à la casse alors que MySQL ne le fait pas.
Solutions potentielles :
- Utiliser des instructions iLike pour Postgres : cela n'est pas réalisable car MySQL est incapable de gérer de telles instructions.
- Écrire des instructions LIKE et iLike distinctes basées sur la base de données cible : cette approche introduit une complexité de maintenance.
Discussion :
La solution optimale à ce dilemme s'aligne sur les meilleures pratiques de développement :
-
Maintenir l'homogénéité dans le logiciel Pile : Utilisez la même pile logicielle (y compris la base de données) dans les environnements de développement et de production. Les disparités entre les deux peuvent entraîner des bugs imprévus.
-
Vérifiez les configurations de la base de données : Vérifiez que les configurations de la base de données, y compris les classements, sont identiques dans MySQL et Postgres. Les divergences peuvent entraîner un comportement incohérent, non seulement avec les instructions LIKE mais également avec d'autres opérations comme ORDER BY.
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!