我從 Gorm 的文檔中獲取了如何創建唯一索引的示例,這似乎只是在聲明模型時向列標記添加 。但是當我嘗試運行它時,它總是會在控制臺中輸出以下消息:,unique(/Users/[...]/main.go:16) [2021-06-26 13:59:20] near "unique": syntax error 雖然直接從他們的文檔中引用的示例會失敗似乎很奇怪,但我嘗試孤立地運行該代碼,并且它確實可以正常工作。然后,從我的應用程序添加越來越多的代碼,一旦Gin-Gonic被引入并被調用,它似乎就開始輸出該消息。我不知道這是否僅僅是因為Go默認情況下不會輸出錯誤,或者正在發生某種沖突。但無論哪種方式,我也從未讓Gorm真正創建唯一索引;語法錯誤與否。gin.Default()最小可重現代碼如下所示,盡管它的行為相當不一致,運行時大約 5 次中有 1 次沒有任何錯誤:package mainimport ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" "github.com/gin-gonic/gin")type User struct { gorm.Model Name string `gorm:"size:40;index:idx_name,unique"`}func main() { db, _ := gorm.Open("sqlite3", "test.db") db.AutoMigrate(&User{}) r := gin.Default() r.Run(":8082")}我該如何解決這個問題;既要擺脫不一致的錯誤,又要實際創建唯一索引?如果相關,我正在Mac上運行它。
1 回答

回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
您從 gorm.io 中舉了一個示例,但您沒有使用正確的包導入。
在這里看到安裝在這里: https://gorm.io/docs/#Install
您正在使用從 v1 (http://v1.gorm.io/docs/) 導入,并使用最新版本中的示例進行編碼。(http://gorm.io/docs/)
在下面的代碼中查看導入和數據庫驅動器初始化:
package main
import (
"github.com/gin-gonic/gin"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
type User struct {
gorm.Model
Name string `gorm:"size:40;index:idx_name,unique"`
}
func main() {
db, _ := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{})
db.AutoMigrate(&User{})
r := gin.Default()
r.Run("localhost:8082")
}
- 1 回答
- 0 關注
- 274 瀏覽
添加回答
舉報
0/150
提交
取消