Utilisant wampServer 3.0.6 + MySQL 5.7.14, plus aucun de mes subqueries dans une clause FROM ne fonctionne alors qu'en utilisant wampServer 2.5 + MySQL 5.6.17 sur un autre pc, tout fonctionne parfaitement. Voici 2 exemples de queries parmi des dizaines d'autres ( Notez qu'en réalité, ces queries sont utilisés comme subqueries dans d'autres plus larges mais que même isolés, ils ne fonctionnent plus ) :
Query 1 :
SELECT rnbr.* FROM ( SELECT Rct_Pub_Mbr_Id, COUNT(Rct_Id) AS Nbr FROM recits WHERE Rct_Rct_Val_Id = 2 AND Rct_Pub_Mbr_Id = 2 GROUP BY Rct_Pub_Mbr_Id ) AS rnbr
Query 2
SELECT base.* FROM ( SELECT Mbr_Rel_CRel_Id, Mbr_Rel_Mbr_Id_2 FROM membres_relations WHERE Mbr_Rel_Mbr_Id_1 = 16 AND Mbr_Rel_Mbr_Id_2 = 2 AND Mbr_Rel_CRel_Id = "BLK" ) AS base
D'autre part, en écrivant ces queries dans phpMyAdmin (4.6.4) SQL tab, j'ai les erreurs suivantes ( exemples pris du second query ) :
sur la ligne avec "(" après la clause FROM : - Une expression était attendue( près de ( ) - Jeton inattendu ( près de ( ) sur la ligne avec "SELECT", après le "(" : - Ce type de clause a été analysé précédemment ( près de SELECT ) sur la ligne avec " ) AS base" : - Jeton inattendu ( près de ) ) - Mot clé non reconnu ( près de AS ) - Jeton inattendu ( près de base )
Rien de tout cela n'arrive avec la version précédente/autre. Comme c'est systématique, ce n'est pas dû au contenu des queries eux-même... c'est semblerait plutôt être dû à un problème de configuration.
Quelqu'un aurait-il une idée pour résoudre ce problème ?
Vous installez MySQL 5.6.17 sous Wampserver 3.0.6 (À passer en 3.0.9 par l'update) pour l'utiliser à la place de mySQL 5.7.14 et vous regardez dans la documentation de MySQL quelles sont les différences entre les branches 5.6 et 5.7. Changez de branche MySQL n'est pas quelque chose d'anodin. Ce ne sont pas les versions 5.6 qui manquent : 5.6.12, 5.6.17, 5.6.28 à 5.6.37 sur [wampserver.aviatechno.net]
Le sql-mode par defaut à changé entre les branche 5.6 et 5.7 : - 5.6 uniquement NO_ENGINE_SUBSTITUTION - 5.7 ONLY_FULL_GROUP_BY', 'STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_AUTO_CREATE_USER', 'NO_ENGINE_SUBSTITUTION
Vous pouvez essayer de mettre sql-mode sur aucun (Effectuer Wampserver update 3.0.9 avant) : Icône Wampmanager -> MySQL -> Configuration MySQL -> sql-mode -> sql-mode->aucun
J'ai désinstallé wampserver J'ai installé la version 3.0.6 et l'update vers 3.0.9 J'ai installé MySQL 5.6.37 ( 64 bits ) J'ai sélectionné MySQL 5.6.37 dans MySQL - configuration - version J'ai sélectionné sql-mode = aucun J'ai créé la base de données J'ai import2 le sql de création des tables et de chargement des données ( venant de l'ancienne version )
... et rien n'a changé... Me suis-je planté quelque part ?
En fait, le site refonctionne bien en local et dans phpMyAdmin (4.6.4), malgré qu'il me donne encore les mêmes erreurs lorsque j'écris ma requête, celle-ci s'exécute correctement...
Je suppose donc, que je dois aussi changer de version de myphpadmin ? Si oui, laquelle prendre ?
Si ça fonctionne bien en local et sans erreur (Éventuellement, voir le fichier mysql.log) le problème se situe avec PhpMyAdmin. Quant à savoir quelle version prendre, je n'en sais strictement rien. PhpMyAdmin peut changer le sql-mode à la volée ou modifier d'autres paramètres de MySQL. Vos essais de requêtes ne doivent pas être effectués avec PhpMyAdmin dont vous n'êtes pas maître du paramétrage.
j'ai téléchargé la même version que sur l'autre pc ( 4.1.14 )
Mais quand je lance phpMyadmin, je suis toujours sur la 4.6.4 Je vois que le 4.1.14 est dans les alias d'apache, sous le nom "phpmyadmin4114" mais en dessous de "phpmyadmin" qui doit être la version 4.6.4.
Comment puis-je faire pour qu'il prenne la 4.1.14 au lieu de la 4.6.4 ?
Il me reste néanmoins une question plus "de fond" :
Ayant un tout nouveau pc, j'avais dû installer Wampserver à partir de "rien"; j'ai donc téléchargé et installé la version complète proposée sur le site officiel et c'est ainsi que je me suis trouvé devant ces problèmes...
Cela veut il dire que dorénavant, toute personne utilisant des subqueries dans une clause FROM va être confrontée à ce genre de problème ?
Y a t-il dans ce cas, une/des solutions alternative(s) pour ne pas devoir tout réinstaller comme j'ai dû le faire ?
> Y a t-il dans ce cas, une/des solutions alternative(s) pour ne pas devoir tout réinstaller comme j'ai dû le faire ? Aucun besoin de réinstaller, il suffisait seulement d'installer l'addon MySQL 5.6.37
Et, je répète une fois de plus, les erreurs données par PhpMyAdmin, sont celles de PhpMyAdmin, pas celles de MySQL. Pour vérifier qu'une requête fonctionne, il faut l'essayer en direct avec MySQL, à l'aide d'un simple script PHP, pas uniquement avec PhpMyAdmin.
C'est à l'utilisateur de vérifier qu'un changement de version et à fortiori un changement de branche n'affecte pas les requêtes effectuées. Par exemple : MySQL 5.7 - Subqueries syntax et les liens associés, par exemple Section C.4, “Restrictions on Subqueries” et de vérifier qu'il n'y a pas de changements pâr rapport à MySQL 5.6