String-Typ kann nicht als sql.NullString verwendet werden
Beim Erstellen eines GORM-Modells kann ein Fehler auftreten, wenn Sie versuchen, a zu verwenden Zeichenfolgentyp für ein Feld, das nullwertfähig sein muss. Das Problem tritt auf, wenn sql.NullString für Felder verwendet wird, die NULL-Werte zulassen.
Problem:
Die Fehlermeldung, die Sie erhalten: „Eine Zeichenfolge kann hier nicht verwendet werden“ ( Typ string) als Typ sql.NullString im Feldwert“ zeigt an, dass Sie versuchen, einem sql.NullString-Feld direkt eine Zeichenfolge zuzuweisen. Allerdings ist sql.NullString kein String-Typ, sondern ein Strukturtyp, der NULL-fähige Strings darstellen soll.
Lösung:
Um dieses Problem zu beheben, müssen Sie eine Initialisierung durchführen das sql.NullString-Feld korrekt. Es sollte wie folgt initialisiert werden:
<code class="go">db.Create(&Day{ Nameday: "Monday", Dateday: "23-10-2019", Something: sql.NullString{String: "a string goes here", Valid: true}, Holyday: false, })</code>
Alternative Lösung:
Wenn Sie lieber eine vereinfachte Syntax für Nullable-Strings verwenden möchten, können Sie Ihren eigenen Nullable-String-Typ erstellen Implementierung der Schnittstellen „sql.Scanner“ und „driver.Valuer“ und Nutzung des Nullbytes, um einen NULL-Wert zu signalisieren.
<code class="go">type MyString string const MyStringNull MyString = "\x00" // implements driver.Valuer, will be invoked automatically when written to the db func (s MyString) Value() (driver.Value, error) { if s == MyStringNull { return nil, nil } return []byte(s), nil } // implements sql.Scanner, will be invoked automatically when read from the db func (s *MyString) Scan(src interface{}) error { switch v := src.(type) { case string: *s = MyString(v) case []byte: *s = MyString(v) case nil: *s = MyStringNull } return nil }</code>
Mit diesem Typ können Sie das Feld „Something“ wie folgt initialisieren:
<code class="go">db.Create(&Day{ Nameday: "Monday", Dateday: "23-10-2019", Something: "a string goes here", Holyday: false, })</code>
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Nullable-Strings in GORM-Modellen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!