Go를 사용하여 단일 문자열에서 여러 SQL 문 실행
mysqldump에 의해 생성된 SQL 덤프에는 순차적으로 실행해야 하는 여러 문이 포함되어 있는 경우가 많습니다. 데이터베이스를 설정합니다. 이 작업을 처리할 수 있는 Go용 MySQL 드라이버를 찾는 것이 어려울 수 있습니다.
제한이 있는 기존 드라이버
Go-MySQL-Driver 및 MyMySQL과 같은 일반적인 드라이버는 다음을 지원하지 않습니다. 단일 문자열에서 여러 명령문을 실행합니다. 이러한 명령문을 실행하려고 하면 오류가 발생합니다.
Go-MySQL-Driver: Enabling Multi-Statement Support
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!