Pim-community-dev: MSSQL Server Agrupar por problema

Criado em 13 nov. 2017  ·  4Comentários  ·  Fonte: akeneo/pim-community-dev

URL:
/resto/atributo/

erro:
Ocorreu uma exceção ao executar '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_.[ validação_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] AS negativo_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] AS MinimumInputLength] , 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]A coluna 'pim_catalog_attribute.sort_order' é inválida na lista de seleção porque não está contida em uma função agregada ou na cláusula GROUP BY.
SQLSTATE [42000, 8180]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]As instruções não puderam ser preparadas.

Problema está em:
/src/Pim/Bundle/EnrichBundle/Doctrine/ORM/Repository/AttributeSearchableRepository.php
linha: 160

Comentários muito úteis

Olá @ahocquard ,
Eu sei sobre os requisitos do sistema.
A questão realmente é se a Akeneo aceitaria melhorias nesse sentido ou não.

Temos um cliente para quem estamos fazendo o Akeneo funcionar no MSSQL.
Se você estiver interessado nas melhorias nesta área, podemos preparar pull requests depois de discutir com alguém do Core Team of Akeneo, qual solução é aceitável para você.
Caso contrário, manteremos as melhorias para nós mesmos.

Lembre-se também de que as melhorias nesta área também ajudam com o MySQL, pois o MySQL também está indo na direção de ser mais rigoroso com os padrões SQL. Também abre uma maneira de usar o Akeneo com outros DBMS como o postgresql.

Se você tiver alguma dúvida ou preocupação, envie-me uma linha sobre a folga da Akeneo.

Todos 4 comentários

Olá,

O Akeneo PIM não deve ser instalado com o MS SQL Server.
Verifique os requisitos do sistema: https://docs.akeneo.com/latest/install_pim/manual/system_requirements/system_requirements.html

Ele deve ser instalado com o Mysql >= 5.7.8 como banco de dados.

Cumprimentos,
Alexandre

Olá @ahocquard ,
Eu sei sobre os requisitos do sistema.
A questão realmente é se a Akeneo aceitaria melhorias nesse sentido ou não.

Temos um cliente para quem estamos fazendo o Akeneo funcionar no MSSQL.
Se você estiver interessado nas melhorias nesta área, podemos preparar pull requests depois de discutir com alguém do Core Team of Akeneo, qual solução é aceitável para você.
Caso contrário, manteremos as melhorias para nós mesmos.

Lembre-se também de que as melhorias nesta área também ajudam com o MySQL, pois o MySQL também está indo na direção de ser mais rigoroso com os padrões SQL. Também abre uma maneira de usar o Akeneo com outros DBMS como o postgresql.

Se você tiver alguma dúvida ou preocupação, envie-me uma linha sobre a folga da Akeneo.

Olá @tmotyl ,

Estaríamos definitivamente abertos a melhorias nesse ponto!
Você pode até jogar com o parâmetro de configuração MySQL ONLY_FULL_GROUP_BY para obter um erro muito semelhante ao que obtém com o MSSQL.
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

Uma vez reproduzido no MySQL, ficaríamos felizes em dar uma olhada nas melhorias!

Não hesite em abrir outro PR com seu código.

Agradeço antecipadamente !

Olá @tmotyl ,

Depois de discutir com a equipe, parece que já estamos em conformidade com a sintaxe GROUP BY adequada (com o modo ONLY_FULL_GROUP_BY). Então estou corrigido (obrigado @ahocquard ) ;) !

A consulta que você forneceu é válida de acordo com a seção T301 "Dependências Funcionais" das especificações do SQL99.

No nosso caso, a coluna id é aquela usada no GROUP_BY . E como esta coluna é a chave primária, ela valida o fato de que todos os dados pertencentes à mesma linha da chave primária estão vinculados a esta id , para que possam ser selecionados a partir do id , e não precisam de nenhuma função de agregação nem precisam estar presentes no lado GROUP BY.

Portanto, o problema está no servidor MSSQL (ou talvez na sua versão), que parece não implementá-lo no Transact-SQL.

Esta página foi útil?
0 / 5 - 0 avaliações