使用 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中文网其他相关文章!