在某些情况下,注释会导致 OperationalError "field isn't in GROUP BY"
Annotation causes OperationalError "field isn't in GROUP BY" in some cases
我尝试将某个模型注释如下:
items = MyModel.objects.all()
aggregated_items = items.annotate(Max('othermodel__some_integer_field'))
检查 aggregated_items
时,我得到 OperationalError
:
<repr(<parler.managers.TranslatableQuerySet at 0x7f69977066d0>) failed: django.db.utils.OperationalError: (1055, "'mydatabase.myapp_mymodel.some_unrelated_field' isn't in GROUP BY")>
奇怪的是,这在一个数据库服务器上工作得很好,但在另一个数据库服务器上却不行。我已经通过 connections.queries
和 运行 在两个数据库上获得了基础查询,并且再次,一个数据库很乐意执行此查询,而另一个 returns 出错。
为什么会这样?据我所知,这些方案是相同的,但我怀疑这两个数据库服务器的设置存在一些差异。数据库服务器一台运行在 MySQL 5.5.44 上,而另一台运行在 5.5.41 上。另一个需要注意的重要事项是我使用的是国际化库 django-parler
.
中的自定义管理器
您的第二个数据库正在 ONLY_FULL_GROUP_BY 模式下工作。
尝试覆盖模式:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'sql_mode': 'traditional',
}
}
}
我尝试将某个模型注释如下:
items = MyModel.objects.all()
aggregated_items = items.annotate(Max('othermodel__some_integer_field'))
检查 aggregated_items
时,我得到 OperationalError
:
<repr(<parler.managers.TranslatableQuerySet at 0x7f69977066d0>) failed: django.db.utils.OperationalError: (1055, "'mydatabase.myapp_mymodel.some_unrelated_field' isn't in GROUP BY")>
奇怪的是,这在一个数据库服务器上工作得很好,但在另一个数据库服务器上却不行。我已经通过 connections.queries
和 运行 在两个数据库上获得了基础查询,并且再次,一个数据库很乐意执行此查询,而另一个 returns 出错。
为什么会这样?据我所知,这些方案是相同的,但我怀疑这两个数据库服务器的设置存在一些差异。数据库服务器一台运行在 MySQL 5.5.44 上,而另一台运行在 5.5.41 上。另一个需要注意的重要事项是我使用的是国际化库 django-parler
.
您的第二个数据库正在 ONLY_FULL_GROUP_BY 模式下工作。
尝试覆盖模式:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'sql_mode': 'traditional',
}
}
}