Exécuter plusieurs instructions SQL dans une seule chaîne avec Go
Les dumps SQL générés par mysqldump contiennent souvent plusieurs instructions qui doivent être exécutées séquentiellement pour mettre en place une base de données. Trouver un pilote MySQL pour Go capable de gérer cette tâche peut être difficile.
Pilotes existants avec des limitations
Les pilotes courants comme Go-MySQL-Driver et MyMySQL ne prennent pas en charge exécuter plusieurs instructions dans une seule chaîne. Les tentatives d'exécution de telles instructions entraîneront des erreurs.
Go-MySQL-Driver : Activation de la prise en charge de plusieurs instructions
Le pilote go-sql-driver/mysql offre un solution en vous permettant de définir le paramètre de connexion multiStatements=true. Ce paramètre permet l'exécution de plusieurs instructions dans une seule chaîne.
package main import ( "database/sql" "log" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@(127.0.0.1:3306)/?multiStatements=true") if err != nil { log.Println(err) } sql := "DROP SCHEMA IF EXISTS foo; CREATE SCHEMA IF NOT EXISTS foo;" _, err = db.Exec(sql) if err != nil { log.Println(err) } db.Close() }
En définissant multiStatements=true, le pilote exécutera les deux instructions de la chaîne, créant ainsi le schéma foo. Il est important de noter que la documentation du conducteur met en garde contre l'utilisation de cette option en raison de problèmes potentiels de transactions et d'autres limitations.
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!