1

我们正在使用gorm,我希望能够指定数据库特定的注释。为方便起见,在开发/测试中我们使用 sqlite3 数据库,然后在生产中使用 MySQL。

不幸的是 sqlite3 不接受CHARACTER SETCOLLATE关键字。这意味着以下中断:

type User struct {
    Name  string `gorm:"primary_key;type:varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci"`
}

有没有人找到解决这个问题的方法?我宁愿不在测试中使用 mysql,也宁愿不手动管理列。

4

2 回答 2

2

这里最好的事情是使用 MySQL 进行测试。如果您能够为测试指定不同的标签,您将永远不会知道您的代码是否真的可以在生产环境中工作,因为您永远不会测试在那里运行的代码。

您应该尽量保持测试和生产之间的一致性。你怎么知道你的注释是否真的正确?

于 2018-02-03T07:09:18.470 回答
1

我认为一个解决方案是使用构建标签

在两个不同的文件中声明两个不同User的文件,比如user_sqlite3.gouser_mysql.go. 在 sqlite3 文件中,在package声明之前,放置构建标签:

// +build test

在本地机器上构建时:go buiid -tags=test.

于 2018-02-05T17:11:21.043 回答