如何使用 GORM 将字段的 COLLATION 设置为 utf8_general_ci?

How can I set COLLATION of a field to utf8_general_ci with GORM?

我想在 MySQL 数据库中有一个不区分大小写且唯一的字符串类型字段。我使用了以下模型:

type User struct {
    Id             int64  `json:"id" sql:"AUTO_INCREMENT"`
    Email          string `json:"email" sql:"unique_index"`
}

这使得 Email 独一无二,但是

type User struct {
    Id             int64  `json:"id" sql:"AUTO_INCREMENT"`
    Email          string `json:"email" sql:"unique_index;COLLATION(utf8_general_ci)"`
}

好像没有效果。

如何使用 GORM 将字段的 COLLATION 设置为 utf8_general_ci?

您可以在要更改的字段中使用 sql 标记,如下所示:

type User struct {
    gorm.Model
    Name `sql:"type:VARCHAR(5) CHARACTER SET utf8 COLLATE utf8_general_ci"`
}