問題:
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 中国語 Web サイトの他の関連記事を参照してください。