MySQl version 8.

Un problème avec votre base de données MySQL, PostgreSQL ou autres.

Modérateurs : jturlier, Météo Villarzel

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

MySQl version 8.

Message par PascalWMR » 06 mars 2024, 09:09

Bonjour


J'ai récemment eu la mauvaise surprise de constater que certaines pages de mon site ne s'affichaient plus. J'avais carrément une page blanche à la place.
Les navigateurs quels qu'ils soient me donnait une erreur 500. C'est le pieds pour trouver l'origine d'une erreur 500 :cry:.
Ces mêmes graphiques fonctionnaient normalement avec mon serveur de développement Wamp et avec le serveur web de mon NAS. Donc forcément, cela provenait d'un problème avec le serveur de mon hébergeur Hostpapa.

Bref à force j'ai trouvé.
Mon hébergeur a changé la version de MySQL pour passer à MySQL 8.0.x

Le problème c'est que certaines fonctionnalités et fonction de tri ont été supprimées.
En particulier, j’utilisais les fonctions de tri ASC et DESC dans la fonction de regroupement GROUP BY.
Cela n'est plus possible. Les fonction de tri ASC et DESC restent valable uniquement avec la fonction ORDER BY

Pour l'instant, j'ai réussi à corriger certaines requêtes SQL qui n'utilisent que des fonction de tri ascendant.
Il faut que je trouve la solution pour les requêtes qui utilisent un regroupement avec simultanément les fonctions de tri ASC sur un critère et DESC sur un autre critère.

HELP ME Jean

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: MySQl version 8.

Message par JP54 » 06 mars 2024, 17:54

Ma version PHP chez Kreativmédia est 8.1.25, je viens de vérifier quelques graphiques qui utilisent GROUP BY, ils fonctionnent.
J'ai eu un soucie pour mon autre site héberger chez OVH avec une galerie photo PHP, j'ai été obligé de repasser en 7.4, sinon en 8.3, elle ne fonctionnait pas, Erreur 500.
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: MySQl version 8.

Message par PascalWMR » 07 mars 2024, 09:54

Salut Pascal

Attention, je ne parle pas de PHP je par de MySQL qui est le système de gestion des bases de données.

Il y a longtemps que je suis passé à PHP 8.x. De toute façon, à un moment on est obligé d'y venir ne serait-ce que pour les connections sécurisées à d'autres serveurs.

Par contre, pour MySQL, on a pas le choix de la version. C'est l'hébergeur qui met en place la version de MySQL sur ses serveurs.
Pour Kreatimedia je n'arrive pas à voir la version qu'ils utilise.
Je viens de regarder pour OVH, t'as encore le temps, ils sont passé à MySQL 5.6 (quand même) en octobre 2023 alors que ça fait plus de 5 ans que le version 8 existe ...

La fonction GROUP BY fonctionne toujours.
Ce qui n'est plus accepté c'est une fonction de tri avec une fonction de regroupement
ex: SELECT ..... GROUP BY annee ASC, mois DESC;
c'est à dire, grouper les données par annee en ordre croissant et par mois en ordre décroissant.

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: MySQl version 8.

Message par JP54 » 09 mars 2024, 08:01

Oui, j'ai mal lu ton post, la version MySQL chez Kreativmedia est 8.2.11, donc je devrais rencontré les mêmes problèmes que toi.
J'ai mis les nouvelles librairies et j'ai commencé à modifié un graphique, problème avec le module accessibility, problème avec les balises html text, cellpadding, c'est pas gagné tout ça, ça va prendre beaucoup de temps.
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: MySQl version 8.

Message par PascalWMR » 09 mars 2024, 09:48

Salut Pascal

A moins que tienne à développer ton site pour les personnes handicapées, et là c'est pas gagné parce que c'est coton et je ne crois pas qu'a notre niveau nous ayons les compétences, pour le module accessibility, voici la procédure pour supprimer le message d'alerte;
  1. Tu ne charge pas le module accessibility
  2. Tu met ce code juste avant la rubrique chart

    Code : Tout sélectionner

    accessibility:{
         enabled:false,
    },
    chart:{
         blablabla
    },
    
pour cellpadding, j'en ai parlé ici viewtopic.php?f=19&t=278.
C'est pas le plus compliqué à résoudre.
Si tu veux un tooltip sous forme de tableau HTML (jolibeau), Il faut prendre l'habitude de renseigner dans la rubrique tooltip, les paramètres footerFormat: et headerFormat: puis de formatter chaque séries de données dans la rubrique tooltip de chaque série, comme ceci:

Exemple

Code : Tout sélectionner

window.chart = new Highcharts.StockChart({
	accessibility:{
		enabled:false,
	},
	chart:{
		blablabla,
	}
	tooltip:{
		footerFormat:'</table>',
		headerFormat:'<table style="padding: 0px; font-size:12px"><tr><td colspan="4" class="TD_Header_Tooltip">{point.key}</td></tr>',
	}
	series[{ // série 1
			name: ...
			data: ...
			tooltip:{
				pointFormatter:function(){
					var s= '<tr><td style="text-align: left"><span style="color:'+[this.color]+'">\u25CF </span>&nbsp;'+[this.series.name]+'</td>'
						s = s +'<td style="text-align: center">:</td>'
						s = s +'<td style="text-align: right"><b>'+Highcharts.numberFormat(this.y,1,","," ")+'</b></td>'
						s = s +'<td style="text-align: left"> hPa</td></tr>';
						return s;
					},
				},
			},
		},{ // série 2 etc
			...
		}],
	},
},
Attention, la dernière version des librairies, ne supporte plus les lettres accentuées dans les format de date heure, paramètre xDateFormat: de la rubrique tooltip, puisque maintenant, le format de date dans les tooltip ne se défini plus avec la fonction Highcharts.dateFormat(dateFormat, this.x) mais dans le paramètre xDateFormat:
Attention donc,
xDateFormat:"%A %e %B %Y à %Hh %Mmn", affichera {point.key,"%A %e %B %Y à %Hh %Mm} <-- le à accentué n'est pas reconnu

alors que
xDateFormat:"%A %e %B %Y - %Hh %Mmn", affichera Samedi 09 Mars 2024 - 12h 45mn (par exemple)

Pour MySQL 8 si tu n'a pas utilisé de fonction de tri ASC ou DESC simultanément avec la fonction de regroupement, GROUP BY, tu ne devrait pas avoir de problème particulier.
Mais attention, il n'y a pas que cela qui a changé dans cette version. A voir donc.

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: MySQl version 8.

Message par JP54 » 09 mars 2024, 11:59

Pour le module accessibily, j'avais trouvé.
Pour align, j'avais également trouvé, j'ai remplacé par text-align.
Pour cellpadding, je l'ai carrément supprimé et ça fonctionne. Je n'avais pas vu le sujet où tu en parlais . Je construis mes tooltip comme tu l'indiques, j'en ai pris l'habitude depuis un bon moment.
Par contre, ça fait un petit moment que je m'arrache les cheveux avec 'à' dans le tooltip et comme il n'est plus supporter, j'aurais pu chercher longtemps. Le remplacé par '-' ne me plait pas beaucoup.

Je construit mes tooltip de cette façon

Code : Tout sélectionner

		    tooltip: {
				enabled:true,
                crosshairs: true,
                shared: true,
				split:false,
				valueDecimals : 1,
				borderColor: 'royalblue',
	    	    borderWidth: 1,
				backgroundColor: '#2E2E2E',
				dateTimeLabelFormats:{
				    day:"%A %e %B %Y",
				    hour:"%A %e %B %Y à %Hh %Mmn",
				    millisecond:"%A %e %B %Y à %H:%M:%S.%L",
				    minute:"%a %e %B %Y à %Hh %Mmn",
				    month:"%B %Y",
				    second:"%A %e %B %Y à %Hh %Mmn %Ss",
				    week:"Semaine depuis %A %e %b %Y",
				    year:"%Y",
			    },
                footerFormat:'</table>',
				headerFormat:'<table style="font-size:12px"><tr><td colspan="4">{point.x:%A %e %B %Y - %Hh %Mmin}</td></tr>',
				xDateFormat:"%A %e %B à %Hh %Mmn",
			},

            series: [{
                name: 'Température',
				data: comArr(temp_out),
				zIndex: 1, 
				color: '#FFFF00',
				lineWidth: 1,
                marker: {
                    enabled: false,
                },
				tooltip:{
					pointFormatter:function(){
						var s= '<tr><td text-align="left"><br /><br /><span style="color:'+[this.color]+'">\u25CF </span>'+[this.series.name]+'</td>'
						s = s +'<td text-align="center">: </td>'
						s = s +'<td text-align="right"><b>'+Highcharts.numberFormat(this.y,1,","," ")+'</b></td>'
						s = s +'<td text-align="left"> °C</td></tr>';
						return s;
					},
				},
				
                }],

Et toi dans ton tooltip à la place de

Code : Tout sélectionner

headerFormat:'<table style="font-size:12px"><tr><td colspan="4">{point.x:%A %e %B %Y - %Hh %Mmin}</td></tr>',
tu utilises le point.key

Code : Tout sélectionner

headerFormat:'<table style="font-size:12px"><tr><td colspan="4" class="TD_Header_Tooltip">{point.key}</td></tr>',
J'ai essayé sur mon graphique, mais ça ne fonctionne pas et je ne trouve pas pourquoi. Et quelle la différence entre les deux.
https://www.meteo-jarny.com/Graphiques ... nsive.php
Si, j'ai des graphiques avec ASC et DESC avec GROUP BY, mais je n'en suis pas encore à ces graphiques.
Merci pour toutes ces infos
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: MySQl version 8.

Message par PascalWMR » 09 mars 2024, 17:05

EUREKA

J'ai trouvé la parade pour les caractères accentués.

Dans la rubrique tooltip,
désactiver en mettant 2// dateTimeLabelFormats:{}
désactiver en mettant 2// xDateFormat:

et au lieu de

Code : Tout sélectionner

headerFormat:'<table style="padding: 0px; font-size:12px"><tr><td colspan="4" class="TD_Header_Tooltip">{point.key}</td></tr>',
mettre

Code : Tout sélectionner

headerFormat:'<table style="padding: 0px; font-size:12px"><tr><td colspan="4" class="TD_Header_Tooltip">{point.key:%A %e %B %Y} à {point.key:%Hh %Mmn}</td></tr>',
C'est pas très catholique comme solution mais ça fonctionne.

Pourquoi j'utilise {point.key}: C'est marqué là https://api.highcharts.com/highcharts/t ... aderFormat

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: MySQl version 8.

Message par JP54 » 10 mars 2024, 08:01

Bien vu Pascal, en effet, ça fonctionne parfaitement :)
Merci pour le lien, je vais regardé

Pascal
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: MySQl version 8.

Message par jturlier » 15 mars 2024, 22:45

PascalWMR a écrit :
06 mars 2024, 09:09
Bonjour


J'ai récemment eu la mauvaise surprise de constater que certaines pages de mon site ne s'affichaient plus. J'avais carrément une page blanche à la place.
Les navigateurs quels qu'ils soient me donnait une erreur 500. C'est le pieds pour trouver l'origine d'une erreur 500 :cry:.
Ces mêmes graphiques fonctionnaient normalement avec mon serveur de développement Wamp et avec le serveur web de mon NAS. Donc forcément, cela provenait d'un problème avec le serveur de mon hébergeur Hostpapa.

Bref à force j'ai trouvé.
Mon hébergeur a changé la version de MySQL pour passer à MySQL 8.0.x

Le problème c'est que certaines fonctionnalités et fonction de tri ont été supprimées.
En particulier, j’utilisais les fonctions de tri ASC et DESC dans la fonction de regroupement GROUP BY.
Cela n'est plus possible. Les fonction de tri ASC et DESC restent valable uniquement avec la fonction ORDER BY

Pour l'instant, j'ai réussi à corriger certaines requêtes SQL qui n'utilisent que des fonction de tri ascendant.
Il faut que je trouve la solution pour les requêtes qui utilisent un regroupement avec simultanément les fonctions de tri ASC sur un critère et DESC sur un autre critère.

HELP ME Jean

A+
Pascal
Bonsoir Pascal,
n'ayant pas la version 8 de MySQL, je ne peux pas tester, tu peux peut-être essayer qq chose comme ça :
select * from minimaxi group by 1 desc; Il semble me souvenir que c'était ce qu'on utilisait en SQL92... c'était hier :lol:
Tu peux aussi essayer de supprimer le ONLY_FULL_GROUP_BY
Si tu n'as pas de variables globales particulière pour Sql_mode, tu peux simplement passer cette commande : SET GLOBAL sql_mode = '';
Voir https://stackoverflow.com/questions/358 ... -sequelize

Honnêtement, je n'ai pas beaucoup d'idées sur le sujet !!!
Bien amicalement
Jean
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: MySQl version 8.

Message par PascalWMR » 16 mars 2024, 09:51

Salut Jean

jturlier a écrit :
15 mars 2024, 22:45

Bonsoir Pascal,
n'ayant pas la version 8 de MySQL, je ne peux pas tester, tu peux peut-être essayer qq chose comme ça :
select * from minimaxi group by 1 desc; Il semble me souvenir que c'était ce qu'on utilisait en SQL92... c'était hier :lol:
Tu peux aussi essayer de supprimer le ONLY_FULL_GROUP_BY
Si tu n'as pas de variables globales particulière pour Sql_mode, tu peux simplement passer cette commande : SET GLOBAL sql_mode = '';
Voir https://stackoverflow.com/questions/358 ... -sequelize
J'ai tout essayé Jean ça ne fonctionne plus.
J'ai lu la doc de MySQL 8 et effectivement les fonctions de tri utilisée simultanément avec une fonction de regroupement ne fonctionnent plus.

Il faut d'abord regrouper les données avec GROUP BY puis les trier après avec ORDER BY
En fin de compte c'est logique.
Par exemple
Avec MySQL antérieur à 8, l'on aurait pu écrire

Code : Tout sélectionner

SELECT `annee`,`mois`,AVG(`t_out_mini`) FROM `minimaxi` WHERE 1 GROUP BY `annee` DESC, `mois` ASC
Maintenant, avec MySQL 8 il faut écrire

Code : Tout sélectionner

SELECT `annee`,`mois`,AVG(`t_out_mini`) FROM `minimaxi` WHERE 1 GROUP BY `annee`,`mois` ORDER BY `annee`DESC, `mois`ASC
Le code est plus long mais logique

L'on peut aussi écrire GROUP BY 1,2 et ORDER BY 1 DESC, 2 ASC puisque les 2 champs sont dans la clause SELECT.
Si les champs ne sont pas dans la clause SELECT on nomme alors les champs dans les fonctions de regroupement et de tri

Donc pour Pascal, j'ai aussi résolu le problème de tri multiple que j’évoquai dans mon 1er post

A+
Pascal
Modifié en dernier par PascalWMR le 16 mars 2024, 10:03, modifié 1 fois.
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

Répondre