How to create a new MySQL database with go-sql-driver

后端 未结 3 1592
遇见更好的自我
遇见更好的自我 2020-12-13 11:01

I\'m working on Golang script that automatically clone a database. I\'m using go-sql-driver but i can\'t find in the documentation a way to create a new database. Connection

3条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-13 11:34

    If you want to create a new database if it does not exist, and use it directly in your program, be aware that database/sql maintains a connection pool.

    Therefore the opened database connection, should preferably contain the database name. I've seen "Error 1046: No database selected" when database/sql opens a new connection after using db.Exec("USE "+name) manually.

    func createAndOpen(name string) *sql.DB {
    
       db, err := sql.Open("mysql", "admin:admin@tcp(127.0.0.1:3306)/")
       if err != nil {
           panic(err)
       }
       defer db.Close()
    
       _,err = db.Exec("CREATE DATABASE IF NOT EXISTS "+name)
       if err != nil {
           panic(err)
       }
       db.Close()
    
       db, err = sql.Open("mysql", "admin:admin@tcp(127.0.0.1:3306)/" + name)
       if err != nil {
           panic(err)
       }
       defer db.Close()
       return db
    }
    

提交回复
热议问题