你的問題
你好,
美好的一天
系統規格
- 去最新的
- 纖維
- 視窗 11
- postgres
我正在嘗試運行 AutoMigrate,但出現錯誤,一切正常,但自上周以來,當我運行代碼時出現以下錯誤。
2021/12/30 13:17:56 ←[35mC:/personal/projects/uni-blog/src/database/connect.go:43
←[0m←[31m[error] ←[0munsupported data type: &[]
2021/12/30 13:17:56 ←[35mC:/personal/projects/uni-blog/src/database/connect.go:43
←[0m←[31m[error] ←[0mfailed to parse value &models.Claims{RegisteredClaims:jwt.RegisteredClaims{Issuer:"", Subject:"", Audience:jwt.ClaimStrings(nil), ExpiresAt:<nil>, NotBefore:<nil>, IssuedAt:<nil>, ID:""}, ID:uuid.UUID{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, got error unsupported data type: &[]
2021/12/30 13:17:56 ←[35mC:/Users/raliq/go/pkg/mod/gorm.io/driver/postgres@v1.1.2/migrator.go:192
←[0m←[31m[error] ←[0munsupported data type: &[]
2021/12/30 13:17:56 ←[35mC:/Users/raliq/go/pkg/mod/gorm.io/driver/postgres@v1.1.2/migrator.go:167
←[0m←[31m[error] ←[0munsupported data type: &[]
2021/12/30 13:17:56 ←[35mC:/Users/raliq/go/pkg/mod/gorm.io/driver/postgres@v1.1.2/migrator.go:167
←[0m←[31m[error] ←[0mfailed to parse value &models.Claims{RegisteredClaims:jwt.RegisteredClaims{Issuer:"", Subject:"", Audience:jwt.ClaimStrings(nil), ExpiresAt:<nil>, NotBefore:<nil>, IssuedAt:<nil>, ID:""}, ID:uuid.UUID{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, got error unsupported data type: &[]
2021/12/30 13:17:56 ←[35mC:/Users/raliq/go/pkg/mod/gorm.io/driver/postgres@v1.1.2/migrator.go:167
←[0m←[31m[error] ←[0munsupported data type: &[]
Sorry couldn't migrate'...
Database connection was successful...
這是我的代碼和出現問題的模型,因為它遷移了用戶模型,然后卡在了索賠中
DBConnection
var DB *gorm.DB
func ConnectPg() {
p := config.Config("DB_PORT")
port, err := strconv.Atoi(p)
// port, err := strconv.ParseUint(p, 10, 32)
if err != nil {
log.Println("Sorry db port error: ", err)
}
// connection url to DB
dns := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", config.Config("DB_HOST"), port, config.Config("DB_USER"), config.Config("DB_PASSWORD"), config.Config("DB_NAME"))
// connect to DB
var dbErr error
DB, dbErr = gorm.Open(postgres.Open(dns), &gorm.Config{})
if dbErr != nil {
panic("failed to connect to database..")
}
fmt.Println("Running the migrations...")
if migrateErr := DB.AutoMigrate(&models.User{}, &models.Claims{}, &models.Permission{}, &models.Role{}, &models.RolePermission{}, &models.SessionLog{}); migrateErr != nil {
fmt.Println("Sorry couldn't migrate'...")
}
fmt.Println("Database connection was successful...")
}
Claims model
package models
import (
"github.com/golang-jwt/jwt/v4"
"github.com/google/uuid"
)
type Claims struct {
jwt.RegisteredClaims
ID uuid.UUID `gorm:"type:uuid;default:uuid_generate_v4()"`
}
這是我從![得到錯誤不支持的資料型別:&[]。這是 gorm 模型 golang/jwt](https://img.uj5u.com/2022/01/03/c3989efb02cf4450bc98929f240a32d8.png)
uj5u.com熱心網友回復:
Scanner/Valuer 介面沒有為切片型別實作,即 []string。因此,您可以使用https://pkg.go.dev/github.com/lib/pq 中的 pq.StringArray 型別,而不是 jwt.RegisteredClaims 結構中的 []string 型別。您可以使用具有相同欄位但使用 pq.StringArray 型別而不是 []string 型別的自定義結構。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/401954.html
標籤:PostgreSQL的 去 jwt 去吧 纤维
