我是 golang 的 GORM 新手。我被困在一個點上。通常我們選擇這樣的數(shù)據(jù)庫: DBGorm, err = gorm.Open("mysql", user:password@tcp(host:port)/db_name)但我的問題是我會在請求中得到'db_name',它意味著我不知道可能會出現(xiàn)哪個 db_name,我將不得不根據(jù)該 db_name 進行查詢。所以現(xiàn)在,我將在 init 函數(shù)中創(chuàng)建數(shù)據(jù)庫指針,如下所示: DBGorm, err = gorm.Open("mysql", user:password@tcp(host:port)/)沒有 db_name?,F(xiàn)在我將如何切換到 db_name 來請求我。因為當我嘗試做DBGorm.Create(&con)時,它顯示No database selected。如果我使用'database/sql',那么我可以像這樣進行原始查詢:“SELECT * FROM db_name.table_name”,這可以解決我的問題。但是如何在gorm中做到這一點?
2 回答

蠱毒傳說
TA貢獻1895條經(jīng)驗 獲得超3個贊
我在 Github 上看到了一篇相關的文章。https://github.com/go-sql-driver/mysql/issues/173#issuecomment-427721651
你需要做的就是
開始交易,
設置你的數(shù)據(jù)庫
運行您想要的查詢。
并切換回您想要的數(shù)據(jù)庫
完成后提交。
下面是一個例子
tx := db.Begin() // start transaction
tx.Exec("use " + userDB) // switch to tenant db
tx.Exec("insert into ....") // do some work
tx.Exec("use `no-op-db`") // switch away from tenant db (there is no unuse, so I just use a dummy)
tx.Commit() // end transaction

蝴蝶刀刀
TA貢獻1801條經(jīng)驗 獲得超8個贊
您可以在對表進行查詢或其他操作時顯式指定db_name
和table_name
使用。.Table()
DBGorm.Table("db_name.table_name").Create(&con)
- 2 回答
- 0 關注
- 975 瀏覽
添加回答
舉報
0/150
提交
取消