Go を使用して単一の文字列で複数の SQL ステートメントを実行する
mysqldump によって生成された SQL ダンプには、多くの場合、順番に実行する必要がある複数のステートメントが含まれています。データベースをセットアップします。このタスクを処理できる Go 用の MySQL ドライバーを見つけるのは難しい場合があります。
制限のある既存のドライバー
Go-MySQL-Driver や MyMySQL などの一般的なドライバーには、単一の文字列で複数のステートメントを実行します。このようなステートメントを実行しようとすると、エラーが発生します。
Go-MySQL-Driver: マルチステートメントのサポートの有効化
go-sql-driver/mysql ドライバーは、これを解決するには、multiStatements=true 接続パラメータを設定できるようにします。このパラメーターを使用すると、単一の文字列内で複数のステートメントを実行できます。
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() }
multiStatements=true を設定すると、ドライバーは文字列内の両方のステートメントを実行し、foo スキーマを正常に作成します。ドライバーのドキュメントでは、トランザクションやその他の制限に関する潜在的な問題のため、このオプションを使用しないよう警告していることに注意することが重要です。
以上がGo の MySQL ドライバーを使用して単一の文字列で複数の SQL ステートメントを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。