ホームページ >バックエンド開発 >Golang >Go の MySQL ドライバーを使用して単一の文字列で複数の SQL ステートメントを実行するにはどうすればよいですか?

Go の MySQL ドライバーを使用して単一の文字列で複数の SQL ステートメントを実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 17:08:10473ブラウズ

How Can I Execute Multiple SQL Statements in a Single String Using Go's MySQL Driver?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。