网址:
/休息/属性/
错误:
执行 '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 上给我留言。
你好@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 中实现它。
最有用的评论
嗨@ahocquard ,
我知道系统要求。
真正的问题是 Akeneo 是否会接受改进。
我们有一个客户,我们让 Akeneo 在 MSSQL 上工作。
如果您对这方面的改进感兴趣,我们可以在与 Akeneo 核心团队的人讨论后准备拉取请求,您可以接受哪种解决方案。
如果没有,我们将为自己保留改进。
还请记住,这方面的改进也有助于 MySQL,因为 MySQL 也正朝着更严格的 SQL 标准方向发展。 它还开辟了一种将 Akeneo 与其他 DBMS(如 postgresql)一起使用的方法。
如果您有任何问题或疑虑,请在 Akeneo slack 上给我留言。