问题:
您在 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中文网其他相关文章!