Heim  >  Artikel  >  Backend-Entwicklung  >  Scanfehler bei Spaltenindex 8, Name „repliziert“: Scan wird nicht unterstützt, Treiber wird gespeichert. Wert vom Typ uint8 als Typ **bool

Scanfehler bei Spaltenindex 8, Name „repliziert“: Scan wird nicht unterstützt, Treiber wird gespeichert. Wert vom Typ uint8 als Typ **bool

PHPz
PHPznach vorne
2024-02-12 15:15:07849Durchsuche

列索引 8 上的扫描错误,名称“replicated”:不支持扫描,将 driver.Value 类型 uint8 存储为 **bool 类型

Frageninhalt

Ich verwende SQLX, um PostgreSQL boolan[] in eine Golang-Struktur auszuwählen, wobei der Zielstrukturwert []*bool ist.

type App struct {
    ApplicationID string  `db:"application_id"`
    Name          string  `db:"name"`
    Description   string  `db:"description"`
    Replicated    []*bool `db:"replicated"`
}

var apps []App

err := trx.Select(&apps, "Select * From my_function()")

Der zurückgegebene Fehler ist: sql: 列索引 3 上扫描错误,名称“replicated”: 不支持扫描,将 driver.Value 类型 []uint8 存储为类型 *[]*bool

Ich habe mich umgesehen, aber noch keine Lösung gefunden. Jede Hilfe wäre sehr dankbar!

Problemumgehung

Sie können nur Inhalte scannen, die die .Scanner-Schnittstelle implementieren. Sie können die Struktur als

definieren
import "github.com/lib/pq"

type App struct {
    ApplicationID string  `db:"application_id"`
    Name          string  `db:"name"`
    Description   string  `db:"description"`
    Replicated    pq.BoolArray `db:"replicated"`
}

Davon pq.BoolArray[]bool,或者如果您确实需要它是 []*bool können Sie Ihre eigenen Typen erstellen

type BoolArray []*bool

Dann kopieren Sie den Code von hier https://github. com/lib/pq/blob/2a217b94f5ccd3de31aec4152a541b9ff64bed05/array.go#L76 und ändern Sie sie nach Bedarf

Das obige ist der detaillierte Inhalt vonScanfehler bei Spaltenindex 8, Name „repliziert“: Scan wird nicht unterstützt, Treiber wird gespeichert. Wert vom Typ uint8 als Typ **bool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen