Nous sommes de grands fans du langage Évitez de tomber dans ces 11 pièges lorsque vous utilisez base de données/sql ! (Aller à la base de données) et de sa bibliothèque d'accès aux bases de données . Comme vous pouvez probablement le constater de vos propres yeux,
est très petit, mais vous pouvez faire beaucoup de choses avec. Cela inclut des risques substantiels d’erreur et d’erreur trompeuse. Cet article de blog est dédié à certaines des erreurs que nous avons commises dans le passé, dans l’espoir que vous ne referez plus les mêmes erreurs.Pièges courants
database/sql
database/sql
Ouvrez de nombreux rows.Close()
objets.
db
sql.DB
Ne faites pas TIME_WAIT
une fois l'opération terminée.
et ensemble pour la même raison. rows.Close()
max_connections
rows.Close()
db.QueryRow()
Ballonnement de déclaration préparée. .Scan()
Si le code s'exécute avec une concurrence élevée, déterminez si les instructions préparées sont la bonne solution, car elles peuvent être re-préparées plusieurs fois sur différentes connexions lorsque la connexion est occupée.
strconv ou cast encombrent le code. Il est recommandé d'analyser le résultat dans une variable du type souhaité et de laisser
faire la conversion pour vous en coulisses.La gestion des erreurs et les nouvelles tentatives conduisent à un code confus. .Scan()
Laissez
J'ai oublié de vérifier les erreurs après database/sql
.
rows.Next()
Utilisez rows.Next()
pour les requêtes non-SELECT.
db.Query()
Supposons que les déclarations suivantes utilisent la même connexion. Si vous exécutez deux instructions successivement, elles s'exécutent probablement sur deux connexions différentes. Exécutez
LOCK TABLES tbl1 WRITE
SELECT * FROM tbl1
Accédez à la base de données tout en utilisant TX. sql.Tx
a été surpris par un sql.Tx
.
(soit créé par vous, soit fourni par le pilote). Vérifiez bien votre schéma, car si une colonne peut être , un jour elle deviendra NULL
, et ce qui fonctionne en test risque de tomber en panne en production. NULL
database/sql
NullXXX
NULL
Adresse originale : https://orangematter.solarwinds.com/2017/03/23/common-pitfalls-when-using-database-sql-in-go/ NULL
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!