Pim-community-dev: MSSQL Server 按问题分组

创建于 2017-11-13  ·  4评论  ·  资料来源: akeneo/pim-community-dev

网址:
/休息/属性/

错误:
执行 'SELECT p0_.[id] AS id_0, p0_.[sort_order] AS sort_order_1, p0_.[useable_as_grid_filter] AS useable_as_grid_filter_2, p0_.[max_characters] AS max_characters_3, p0_.[validation_rule] AS validation_rule_4, p0_.[ validation_regexp] AS validation_regexp_5, p0_.[wysiwyg_enabled] AS wysiwyg_enabled_6, p0_.[number_min] AS number_min_7, p0_.[number_max] AS number_max_8, p0_.[decimals_allowed] AS decimals_allowed_9, p0_.[negative_allowed] ASnegative_allowed_10, p0_.[date_min] AS date_min_11, p0_.[date_max] AS date_max_12, p0_.[metric_family] AS metric_family_13, p0_.[default_metric_unit] AS default_metric_unit_14, p0_.[max_file_size] AS max_file_size_15, p0_.[allowed_extensions] AS allowed_extensions_16, p0_.[minimumInputLength] AS minimumInputLength_17 , p0_.[is_required] AS is_required_18, p0_.[is_unique] AS is_unique_19, p0_.[is_localizable] AS is_localizable_20, p0_.[is_scopable] AS is_scopable_21, p0_.[code] AS code_22, p0_.[entity_type] AS entity_type_ 23, p0_.[attribute_type] AS attribute_type_24, p0_.[backend_type] AS backend_type_25, p0_.[properties] AS properties_26, p0_.[created] AS created_27, p0_.[updated] AS updated_28, p0_.group_id AS group_id_29 FROM pim_catalog_attribute p0_ LEFT JOIN pim_catalog_attribute_group p1_ ON p0_.group_id = p1_.id GROUP BY p0_.[id] ORDER BY (SELECT 0) OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY':

SQLSTATE [42000, 8120]:[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]列 'pim_catalog_attribute.sort_order' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
SQLSTATE [42000, 8180]:[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]无法准备语句。

问题出在:
/src/Pim/Bundle/EnrichBundle/Doctrine/ORM/Repository/AttributeSearchableRepository.php
线路:160

最有用的评论

@ahocquard
我知道系统要求。
真正的问题是 Akeneo 是否会接受改进。

我们有一个客户,我们让 Akeneo 在 MSSQL 上工作。
如果您对这方面的改进感兴趣,我们可以在与 Akeneo 核心团队的人讨论后准备拉取请求,您可以接受哪种解决方案。
如果没有,我们将为自己保留改进。

还请记住,这方面的改进也有助于 MySQL,因为 MySQL 也正朝着更严格的 SQL 标准方向发展。 它还开辟了一种将 Akeneo 与其他 DBMS(如 postgresql)一起使用的方法。

如果您有任何问题或疑虑,请在 Akeneo slack 上给我留言。

所有4条评论

你好,

Akeneo PIM 不应与 MS SQL Server 一起安装。
请检查系统要求: https :

它必须与 Mysql >= 5.7.8 作为数据库一起安装。

问候,
亚历山大

@ahocquard
我知道系统要求。
真正的问题是 Akeneo 是否会接受改进。

我们有一个客户,我们让 Akeneo 在 MSSQL 上工作。
如果您对这方面的改进感兴趣,我们可以在与 Akeneo 核心团队的人讨论后准备拉取请求,您可以接受哪种解决方案。
如果没有,我们将为自己保留改进。

还请记住,这方面的改进也有助于 MySQL,因为 MySQL 也正朝着更严格的 SQL 标准方向发展。 它还开辟了一种将 Akeneo 与其他 DBMS(如 postgresql)一起使用的方法。

如果您有任何问题或疑虑,请在 Akeneo slack 上给我留言。

你好@tmotyl

我们肯定会在这一点上进行改进!
你甚至可以使用 MySQL ONLY_FULL_GROUP_BY 配置参数,这样你就会得到与 MSSQL 非常相似的错误。
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

一旦在 MySQL 上重现,我们将很高兴看到改进!

不要犹豫,用你的代码打开另一个 PR。

先感谢您 !

你好@tmotyl

在与团队讨论之后,我们似乎已经符合正确的 GROUP BY 语法(使用 ONLY_FULL_GROUP_BY 模式)。 所以我纠正了(感谢@ahocquard );)!

根据 SQL99 规范的 T301“功能依赖关系”部分,您提供的查询是有效的。

在我们的例子中, id列是GROUP_BY 。 由于此列是主键,因此它验证了与主键属于同一行的所有数据都链接到此id的事实,因此可以从id选择它们,并且不需要任何聚合函数,也不需要出现在 GROUP BY 端。

所以问题出在 MSSQL 服务器(或者你的版本)上,它似乎没有在 Transact-SQL 中实现它。

此页面是否有帮助?
0 / 5 - 0 等级