問題:
您在Go 中定義了自訂Set資料類型,例如threadUnsafeSet,並且您嘗試使用GORM 庫將此資料類型持久保存到MySQL 中。但是,您遇到與該集合的 SQL 類型無效相關的錯誤。
解決方案:
要解決此問題,您需要實作 Value 和 Scan 方法為您的自訂設定資料類型。這些方法使資料庫驅動程式能夠以資料庫相容的格式儲存和檢索資料。
這是一個範例實作:
type ThreadUnsafeSet map[interface{}]struct{} func (data *ThreadUnsafeSet) Value() (driver.Value, error) { // Implement the logic to convert data to a database-compatible format, e.g., JSON return data.ConvertJSONToString(), nil } func (data *ThreadUnsafeSet) Scan(value interface{}) error { // Implement the logic to convert from the database-compatible format to the custom set data type *data = data.ConvertStringToJson(valueString) return nil }
附加說明:
在Value 和Scan 方法中,您可以使用一些序列化或編碼技術(例如JSON)將自訂資料類型轉換為相容的字串或位元組格式與MySQL。這允許您將資料作為單一實體而不是單獨的列來儲存和檢索。
以上是如何使用 GORM 在 MySQL 中保留自訂 Go Set 資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!