最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Gorm操作Oracle數(shù)據(jù)庫踩坑記錄

 更新時(shí)間:2022年06月14日 11:02:00   作者:Monkey_D_Newdun  
gorm是目前用得最多的go語言orm庫,本文主要介紹了使用Gorm操作Oracle數(shù)據(jù)庫踩坑記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

gorm是目前用得最多的go語言orm庫,但是目前gorm官方并不支持oracle的驅(qū)動(dòng),需要用到第三驅(qū)動(dòng),最近有個(gè)項(xiàng)目要往oracle寫數(shù)據(jù),記錄一下踩到的坑

下載依賴

go get github.com/cengsin/oracle

這個(gè)驅(qū)動(dòng)與最新的gorm庫不匹配,要將gorm降級到1.21版本,不然會(huì)出現(xiàn)“......github.com/cengsin/oracle@v1.0.0/oracle.go:53:59: unknown field 'WithReturning' in struct literal of type callbacks.Config” 錯(cuò)誤

項(xiàng)目結(jié)構(gòu)

包含main.go和一個(gè)model目錄。

|——oracle_test
|    |——model
|        |——model.go
|    |——main.go
|    |——go.mod

編輯go.mod將gorm降級

module oracle_test
 
go 1.16
 
require (
    github.com/cengsin/oracle v1.0.0
    gorm.io/gorm v1.21.16
)

運(yùn)行g(shù)o mod tidy命令生效

定義model類型

假設(shè)數(shù)據(jù)庫里有張商店信息的表shops,包含ID和店名兩個(gè)字段,編寫如下model.go文件。其中結(jié)構(gòu)體方法TableName指定改類型對應(yīng)的數(shù)據(jù)表。

package model
 
type ShopInfo struct {
    ShopId   string `gorm:"column:SHOPID;not null"`
    ShopName string `gorm:"column:SHOPNAME;not null"`
}
 
func (s *ShopInfo) TableName() string {
    return "shops"
}

連接數(shù)據(jù)庫 

連接名"database/password@127.0.0.1:1521/XE"中database是數(shù)據(jù)庫名,password是密碼,XE是服務(wù)名。LogLevel為logger.Warn會(huì)打印大多數(shù)sql語句,設(shè)為logger.Error只會(huì)打印運(yùn)行出錯(cuò)的sql語句。

package main
 
import (
    "fmt"
    "log"
    "os"
    "time"
 
    "oracle_test/model"
 
    "github.com/cengsin/oracle"
    "gorm.io/gorm"
    "gorm.io/gorm/logger"
)
 
func test() {
    log.Println("initial database connect……")
    db, err := gorm.Open(oracle.Open("database/password@127.0.0.1:1521/XE"), &gorm.Config{
        Logger: logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
            SlowThreshold: 1 * time.Millisecond,
            LogLevel:      logger.Warn, //打印級別
            Colorful:      true,
        }),
        //SkipDefaultTransaction: true,
    })
 
    if err != nil {
        log.Fatalln(err)
    }
 
    if e := db.AutoMigrate(&model.ShopInfo{}); e != nil {
        log.Fatalln(e.Error())
    }
    shopInfo := new(model.ShopInfo)
    db.First(shopInfo)
    fmt.Print(*shopInfo)
}

測試運(yùn)行

go run ./main.go

到此這篇關(guān)于使用Gorm操作Oracle數(shù)據(jù)庫踩坑記錄的文章就介紹到這了,更多相關(guān)Gorm操作Oracle內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 初探Golang數(shù)據(jù)結(jié)構(gòu)之Slice的使用

    初探Golang數(shù)據(jù)結(jié)構(gòu)之Slice的使用

    在學(xué)習(xí)Go語言時(shí),一直對數(shù)組和切片的使用場景好奇,不明白為什么推薦使用切片來代替數(shù)組,所以本文就來和大家梳理一下Slice切片的相關(guān)知識吧
    2023-09-09
  • Go語言變量與基礎(chǔ)數(shù)據(jù)類型詳情

    Go語言變量與基礎(chǔ)數(shù)據(jù)類型詳情

    Go 是靜態(tài)(編譯型)語言,是區(qū)別于解釋型語言的弱類型語言(靜態(tài):類型固定,強(qiáng)類型:不同類型不允許直接運(yùn)算),下面文章將對其進(jìn)行詳細(xì)介紹,需要的朋友可以參考一下
    2021-09-09
  • golang 獲取當(dāng)前執(zhí)行程序路徑的操作

    golang 獲取當(dāng)前執(zhí)行程序路徑的操作

    這篇文章主要介紹了golang 獲取當(dāng)前程序執(zhí)行路徑的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang中漏洞數(shù)據(jù)庫的使用詳解

    Golang中漏洞數(shù)據(jù)庫的使用詳解

    govulncheck是Golang中的漏洞掃描工具,它強(qiáng)大功能的背后,離不開?Go?漏洞數(shù)據(jù)庫(Go?vulnerability?database)的支持,所以本文就來為大家詳細(xì)講解下?Go?漏洞數(shù)據(jù)庫相關(guān)的知識
    2023-09-09
  • Go語言實(shí)現(xiàn)定時(shí)器的原理及使用詳解

    Go語言實(shí)現(xiàn)定時(shí)器的原理及使用詳解

    這篇文章主要為大家詳細(xì)介紹了Go語言實(shí)現(xiàn)定時(shí)器的兩種方法:一次性定時(shí)器(Timer)和周期性定時(shí)器(Ticker),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • 詳解Golang如何實(shí)現(xiàn)支持隨機(jī)刪除元素的堆

    詳解Golang如何實(shí)現(xiàn)支持隨機(jī)刪除元素的堆

    堆是一種非常常用的數(shù)據(jù)結(jié)構(gòu),它能夠支持在O(1)的時(shí)間復(fù)雜度獲取到最大值(或最小值)。本文主要介紹了如何實(shí)現(xiàn)支持O(log(n))隨機(jī)刪除元素的堆,需要的可以參考一下
    2022-09-09
  • Go語言中的Base64編碼原理介紹以及使用

    Go語言中的Base64編碼原理介紹以及使用

    Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一,可用于在HTTP環(huán)境下傳遞較長的標(biāo)識信息,下面這篇文章主要給大家介紹了關(guān)于Go語言中的Base64編碼原理介紹以及使用的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • go string to int 字符串與整數(shù)型的互換方式

    go string to int 字符串與整數(shù)型的互換方式

    這篇文章主要介紹了go string to int 字符串與整數(shù)型的互換方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 簡單聊一聊Go語言中的數(shù)組和切片

    簡單聊一聊Go語言中的數(shù)組和切片

    數(shù)組和切片由于語法十分相似,在使用中容易混淆,要認(rèn)真區(qū)分,下面這篇文章主要給大家介紹了關(guān)于Go語言中數(shù)組和切片的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • 解決go在函數(shù)退出后子協(xié)程的退出問題

    解決go在函數(shù)退出后子協(xié)程的退出問題

    這篇文章主要介紹了解決go在函數(shù)退出后子協(xié)程的退出問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論

靖江市| 博罗县| 永登县| 白沙| 确山县| 苏尼特右旗| 固原市| 保定市| 庄河市| 宣汉县| 麻城市| 怀远县| 临夏县| 宁南县| 无为县| 冀州市| 长白| 东安县| 康定县| 阳东县| 贵溪市| 井陉县| 茶陵县| 厦门市| 秀山| 珲春市| 洛浦县| 沛县| 玛曲县| 奎屯市| 博爱县| 保定市| 广西| 喀什市| 绵阳市| 渭源县| 西城区| 抚宁县| 淮北市| 弥勒县| 沙坪坝区|