Home >Backend Development >Golang >How Can I Execute Multiple SQL Statements in a Single String Using Go\'s `github.com/go-sql-driver/mysql` Driver?

How Can I Execute Multiple SQL Statements in a Single String Using Go\'s `github.com/go-sql-driver/mysql` Driver?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 13:34:11767browse

How Can I Execute Multiple SQL Statements in a Single String Using Go's `github.com/go-sql-driver/mysql` Driver?

Multiple SQL Statements in One String with Go

In PHP, it's straightforward to execute multiple SQL statements in one go by separating them with a semicolon. However, finding a MySQL driver for Go that offers this functionality can be challenging.

One popular driver, github.com/go-sql-driver/mysql, initially faced limitations in this regard. But as per the documentation, it now supports multiple statements through the multiStatements=true connection parameter.

Here's a modified code snippet to demonstrate:

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // Create a connection string with multiStatements enabled
    connectionString := fmt.Sprintf("user:password@(127.0.0.1:3306)/?multiStatements=true")

    db, err := sql.Open("mysql", connectionString)
    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()
}

With this modification, multiple SQL statements in the sql string will be executed in a single call, eliminating the "Error 1064" previously encountered.

Remember that using multiple statements in one string should be approached with caution, as it can have unpredictable results. The official documentation of github.com/go-sql-driver/mysql provides further details on this topic.

The above is the detailed content of How Can I Execute Multiple SQL Statements in a Single String Using Go\'s `github.com/go-sql-driver/mysql` Driver?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn