【问题标题】:How can I set COLLATION of a field to utf8_general_ci with GORM?如何使用 GORM 将字段的 COLLATION 设置为 utf8_general_ci?
【发布时间】:2015-03-16 21:22:29
【问题描述】:

我想在 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?

【问题讨论】:

  • @RickJames 您的评论与我的问题有多大关系?
  • 我不知道GORM;我更容易在mysql 中交谈。提供该SHOW 的输出将为我提供有关您在做什么的更多信息。
  • @RickJames 如果您不了解 GORM,您将无法帮助我。我可以在 MySQL 中解决这个问题。我的问题是我不知道如何用 GORM 解决它。
  • 请注意,电子邮件地址的 本地部分 至少在理论上是区分大小写的(尽管很多,如果不是大多数,MDA 实际上会忽略字母大小写) .因此,虽然您可能在电子邮件列上使用_ci 排序规则不会遇到任何问题,但您可能可以想象。在这种情况下,最好不要使用 _ci 排序规则,尽管这当然不会使您的问题无效。
  • 您找到解决方案了吗?我使用 golang gorm 也有同样的需求

标签: mysql go-gorm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-12-11
    • 2014-11-09
    • 2013-05-17
    • 2011-04-27
    • 2017-09-24
    • 1970-01-01
    • 2012-04-12
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多