第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在golang中使用GORM在數(shù)據(jù)庫之間切換?

如何在golang中使用GORM在數(shù)據(jù)庫之間切換?

Go
紫衣仙女 2022-06-21 10:19:09
我是 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

你需要做的就是

  1. 開始交易,

  2. 設置你的數(shù)據(jù)庫

  3. 運行您想要的查詢。

  4. 并切換回您想要的數(shù)據(jù)庫

  5. 完成后提交。

下面是一個例子

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


查看完整回答
反對 回復 2022-06-21
?
蝴蝶刀刀

TA貢獻1801條經(jīng)驗 獲得超8個贊

您可以在對表進行查詢或其他操作時顯式指定db_nametable_name使用。.Table()

DBGorm.Table("db_name.table_name").Create(&con)


查看完整回答
反對 回復 2022-06-21
  • 2 回答
  • 0 關注
  • 975 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號