Pim-community-dev: Groupe MSSQL Server par problème

Créé le 13 nov. 2017  ·  4Commentaires  ·  Source: akeneo/pim-community-dev

URL :
/rest/attribut/

Erreur:
Une exception s'est produite lors de l'exécution de '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_rule] AS 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_0_allowed_9, AS nombre_max_8, p0_.[decimals_allowed] AS decimals_0_allowed_9, AS 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_16 AS default_metric_unit_14, p0_.[max_file_size] AS max_file_size_15, p0_.[allowed_extensions_16 , 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 is_scopable_21, p0_.[code] AS code_22, p0_.[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 LEFT JOIN pim_catalog_attribute_group p1_ ON p0_.group_id = p1_.id GROUP BY p0_.[id] ORDER BY (SELECT 0) OFFSET 0 ROW FETCH PROCHAIN ​​20 LIGNES UNIQUEMENT' :

SQLSTATE [42000, 8120] : [Microsoft][Pilote ODBC 13 pour SQL Server][SQL Server]La colonne 'pim_catalog_attribute.sort_order' n'est pas valide dans la liste de sélection car elle n'est contenue ni dans une fonction d'agrégat ni dans la clause GROUP BY.
SQLSTATE [42000, 8180] : [Microsoft][Pilote ODBC 13 pour SQL Server][SQL Server]Les déclarations n'ont pas pu être préparées.

Le problème est dans :
/src/Pim/Bundle/EnrichBundle/Doctrine/ORM/Repository/AttributeSearchableRepository.php
ligne : 160

Commentaire le plus utile

Salut @ahocquard ,
Je connais la configuration système requise.
La question est vraiment de savoir si Akeneo accepterait ou non des améliorations dans ce domaine.

Nous avons un client pour qui nous faisons fonctionner Akeneo sur MSSQL.
Si vous êtes intéressé par les améliorations dans ce domaine, nous pouvons préparer des pull request après avoir discuté avec un membre de la Core Team d'Akeneo, de la solution qui vous convient.
Sinon, nous garderons les améliorations pour nous-mêmes.

Veuillez également garder à l'esprit que les améliorations dans ce domaine aident également avec MySQL, car MySQL va également dans le sens d'être plus strict avec les normes SQL. Il ouvre également un moyen d'utiliser Akeneo avec d'autres SGBD comme postgresql.

Si vous avez des questions ou des préoccupations, n'hésitez pas à m'envoyer un message sur le slack Akeneo.

Tous les 4 commentaires

Bonjour,

Akeneo PIM ne doit pas être installé avec MS SQL Server.
Veuillez vérifier la configuration requise : https://docs.akeneo.com/latest/install_pim/manual/system_requirements/system_requirements.html

Il doit être installé avec Mysql >= 5.7.8 comme base de données.

Salutations,
Alexandre

Salut @ahocquard ,
Je connais la configuration système requise.
La question est vraiment de savoir si Akeneo accepterait ou non des améliorations dans ce domaine.

Nous avons un client pour qui nous faisons fonctionner Akeneo sur MSSQL.
Si vous êtes intéressé par les améliorations dans ce domaine, nous pouvons préparer des pull request après avoir discuté avec un membre de la Core Team d'Akeneo, de la solution qui vous convient.
Sinon, nous garderons les améliorations pour nous-mêmes.

Veuillez également garder à l'esprit que les améliorations dans ce domaine aident également avec MySQL, car MySQL va également dans le sens d'être plus strict avec les normes SQL. Il ouvre également un moyen d'utiliser Akeneo avec d'autres SGBD comme postgresql.

Si vous avez des questions ou des préoccupations, n'hésitez pas à m'envoyer un message sur le slack Akeneo.

Bonjour @tmotyl ,

Nous serions certainement ouverts à des améliorations sur ce point !
Vous pouvez même jouer avec le paramètre de configuration MySQL ONLY_FULL_GROUP_BY afin que vous puissiez obtenir une erreur très similaire à ce que vous obtenez avec MSSQL.
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

Une fois reproduit sur MySQL, nous serions ravis de jeter un œil aux améliorations !

N'hésitez pas à ouvrir un autre PR avec votre code.

Merci d'avance !

Bonjour @tmotyl ,

Après discussion avec l'équipe, il semble que nous soyons déjà conformes à la syntaxe GROUP BY appropriée (avec le mode ONLY_FULL_GROUP_BY). Donc je me corrige (merci @ahocquard ) ;) !

La requête que vous avez fournie est valide selon la section T301 "Dépendances fonctionnelles" des spécifications SQL99.

Dans notre cas, la colonne id est celle utilisée dans le GROUP_BY . Et comme cette colonne est la clé primaire, elle valide le fait que toutes les données appartenant à la même ligne que la clé primaire sont liées à ce id , donc elles peuvent être sélectionnées parmi les id , et n'ont pas besoin de fonction d'agrégation ni d'être présents du côté GROUP BY.

Le problème réside donc dans le serveur MSSQL (ou peut-être votre version) qui ne semble pas l'implémenter dans Transact-SQL.

Cette page vous a été utile?
0 / 5 - 0 notes