亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

遠程數據庫和 SQL 服務器:自動遞增不起作用

遠程數據庫和 SQL 服務器:自動遞增不起作用

Go
侃侃無極 2022-09-19 17:32:38
我正在嘗試使用 GORM 將新值插入到我的 SQL 服務器表中。但是,它不斷返回錯誤。您可以在下面找到詳細示例:type MyStructure struct {    ID                     int32                    `gorm:"primaryKey;autoIncrement:true"`    SomeFlag               bool                     `gorm:"not null"`    Name                   string                   `gorm:"type:varchar(60)"`}執行以下代碼(在事務內創建)myStruct := MyStructure{SomeFlag: true, Name: "XYZ"}result = tx.Create(&myStruct)    if result.Error != nil {        return result.Error    }導致以下錯誤:無法將值 NULL 插入到列“ID”、表“dbo”中。我的結構';列不允許空值。插入失敗然后,由 GORM 生成的 SQL 查詢如下所示:INSERT INTO "MyStructures" ("SomeFlag","Name") OUTPUT INSERTED."ID" VALUES (1, 'XYZ')另一方面,直接在數據庫連接上執行創建(不使用事務)會導致以下錯誤:表“我的結構”沒有標識屬性。無法執行 SET 操作然后,由 GORM 生成的 SQL 查詢如下所示:SET IDENTITY_INSERT "MyStructures" ON;INSERT INTO "MyStructures" ("SomeFlag", "Name") OUTPUT INSERTED."ID" VALUES (1, 'XYZ');SET IDENTITY_INSERT "MyStructures" OFF;在這種情況下,如何使自動遞增工作?為什么我會收到兩個不同的錯誤,具體取決于它是內部交易還是外部交易?
查看完整描述

3 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

我在戈爾姆的問題中發現了這一點:

gorm.DefaultCallback.Create().Remove("mssql:set_identity_insert")

https://github.com/go-gorm/gorm/issues/941#issuecomment-250267125


查看完整回答
反對 回復 2022-09-19
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

嵌入 gorm 總是更好。默認情況下提供字段的結構中的模型:ID、創建時、更新時、已刪除。默認情況下,ID 將是主鍵,并且它是自動遞增的(由 GORM 管理)


type MyStructure struct {

    gorm.Model

    SomeFlag               bool                     `gorm:"not null"`

    Name                   string                   `gorm:"type:varchar(60)"`

}

刪除現有表:并再次創建表:,然后嘗試插入記錄。db.Migrator().DropTable(&MyStructure{})db.AutoMigrate(&MyStructure{})


查看完整回答
反對 回復 2022-09-19
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

只需更換您的結構


type MyStructure struct {

    ID                     int32                    `gorm:"primaryKey;autoIncrement:true"`

    SomeFlag               bool                     `gorm:"not null"`

    Name                   string                   `gorm:"type:varchar(60)"`

}

與此


type MyStructure struct {

    ID                     int32                    `gorm:"AUTO_INCREMENT;PRIMARY_KEY;not null"`

    SomeFlag               bool                     `gorm:"not null"`

    Name                   string                   `gorm:"type:varchar(60)"`

}


查看完整回答
反對 回復 2022-09-19
  • 3 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號