Seite 2 von 3

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 11:57
von chris1278
BNa hat geschrieben: 25.01.2021 11:52 Hallo Bruno,

seh ich genauso als nächste Möglichkeit. Daher, bevor Chris an der SQL-Server Config dauerhaft was ändert,
einfach mal testweise die temporäre Variante des Deaktivierens von "only_full_group_by" probieren.

Hier beschrieben unter Variante (1):
(1) PHPMyAdmin

if you are using phpMyAdmin then change the "sql_mode" setting as mentioned in the below screenshot.
https://stackoverflow.com/a/51629259

Wichtig, vorher mal alle Änderungen an der Ext listener.php rückgängig machen und alle Browser- und Board-Caches leeren,
dann ab ins phpMyAdmin und die Ext sofort testen (weil die temporäre SQL-Änderungen nur bis zum Neustart des SQL-Server "wirkt" :wink:
Datenbank änderungen kann ich wohl nur lokal testen. auf diee datenbank des hosters habe ich keinen einfluss leider.

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 11:59
von BNa
Hallo Chris,

ich rede ja von der temporären Variante, um den Fehler einzukreisen.
Wirst ja wohl Zugriff auf phpMyAdmin haben? Dann haben wir Gewissheit und
Du kannst die Variante dann von Deinem Provider in der "echten" sql-config ändern lassen :wink:

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 12:06
von chris1278
bei mir kann ich den in phpmyadmin editieren aber die zeile ist dort komplett leer.

https://prnt.sc/xlldrj

Wenn du mir sagst, was ich dort per Edit genau reinschreiben soll, kann ich es auf meinem Server mal testen.

beim verso forum muss ich pw nochmal beim lutz fragen dann kann ich mal schauen was er da driun stehen hat.

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 12:13
von BNa
Auch auf Deinem Server einfach mal das testen (steht alles genau beschrieben mit Screenshot unter (1) PHPMyAdmin)
BNa hat geschrieben: 25.01.2021 11:52 Hier beschrieben unter Variante (1):
(1) PHPMyAdmin

if you are using phpMyAdmin then change the "sql_mode" setting as mentioned in the below screenshot.
https://stackoverflow.com/a/51629259

Wichtig, vorher mal alle Änderungen an der Ext listener.php rückgängig machen und alle Browser- und Board-Caches leeren,
dann ab ins phpMyAdmin und die Ext sofort testen (weil die temporäre SQL-Änderungen nur bis zum Neustart des SQL-Server "wirkt"
Ansonsten temporär die dort beschriebene Variante 2 mal probieren

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 12:15
von chris1278
ok wenn ich auf editieren klicke und en begriuff da aus der zeile löschen will kommt diese meldung:
https://prnt.sc/xllyj9

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 12:18
von BNa
Dann hast Du nicht genug Rechte, kannst ja mal temporär Dein Privileg hochschrauben versuchen.

Ansonsten evtl:
BNa hat geschrieben: 25.01.2021 12:13 ..temporär die dort beschriebene Variante 2 mal probieren
(2) SQL/Command prompt Run the below command.

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 12:19
von chris1278
Ich hab jetzt mal folgendes gemacht. bei mir im lokalhost hab ich mal nur den wert ONLY_FULL_GROUP_BY in diese zeile geschrieben und der fehler tritt nun bei mir auch im localhost auf. also scheint das mit dieser variable zusammenzuhängen.

@edit


Ich kann auf dem Server von verso-forum diese Variable SQL-mode nicht ändern egal ob über weg 1 oder 2 da ich leider keine berechtigung dafür habe

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 12:23
von BNa
Sehr cool. Ist der Fehler also quasie umzingelt.
Eleganter wäre es allerdings die listener.php-SQL-Abfrage ONLY_FULL_GROUP_BY-konform zu machen:

Code: Alles auswählen

			$query = 'SELECT w.user_id, w.topic_id, w.counter_user, w.date, u.username, u.user_colour, u.user_id, u.user_avatar, u.user_avatar_type, u.user_avatar_height, u.user_avatar_width, u.user_type, SUM(w.counter_user) AS total
				FROM ' . $this->whovisitedthistopic_table . ' w, ' . USERS_TABLE . ' u
				WHERE w.topic_id = ' . (int) $topic_id . '
					AND w.user_id = u.user_id
				GROUP BY w.user_id
				ORDER BY w.date DESC';
			$row_query = $this->db->sql_query_limit($query, $value);
Fehlt mir nur persönlich grad die Zeit dazu..
@edit

Ich kann auf dem Server von verso-forum diese Variable SQL-mode nicht ändern egal ob über weg 1 oder 2 da ich leider keine berechtigung dafür habe
Dann die von Bruno angedachte Variante und den Support anfragen

------------------

(Edit) Link-Parking:
https://dev.mysql.com/doc/refman/5.7/en ... dling.html

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 25.01.2021 12:24
von chris1278
Du kannst ja mal schauen wenn du zeit hast und mal schauen. Es ist jetzt nicht so eilig das es brennt.

Ich hab jetzt erstmal beim hoster gefragt ob die den Wert einfach mal ändern können. Ob die das machen mus man abwarten. aber das problem der abfrage in der listener zu ändern wäre wahrscheinlich auch für andere der elegantere weg.

Re: [3.2] Wer hat dieses Thema besucht

Verfasst: 28.01.2021 00:46
von BNa
Fix for Who Visited This Topic 1.0.7

SQL-Error:

Code: Alles auswählen

Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'USER_DB.w.counter_user' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by [1055]
Cause: Strict Use of SQL-Server Directive > ONLY_FULL_GROUP_BY SQL
Info: https://www.percona.com/blog/2019/05/13 ... -sql-mode/

Ext-Source: https://www.phpbb.com/customise/db/exte ... pic/216651

Related Topics:
https://www.phpbb.com/customise/db/exte ... pic/196886
https://www.phpbb.com/customise/db/exte ... pic/179781

Solution

Open in Ext > event/listener.php

Find

Code: Alles auswählen

			$query = 'SELECT w.user_id, w.topic_id, w.counter_user, w.date, u.username, u.user_colour, u.user_id, u.user_avatar, u.user_avatar_type, u.user_avatar_height, u.user_avatar_width, u.user_type, SUM(w.counter_user) 
				AS total
				FROM ' . $this->whovisitedthistopic_table . ' w, ' . USERS_TABLE . ' u
				WHERE w.topic_id = ' . (int) $topic_id . '
					AND w.user_id = u.user_id
				GROUP BY w.user_id
				ORDER BY w.date DESC';
			$row_query = $this->db->sql_query_limit($query, $value);
Replace with

Code: Alles auswählen

			// Old Query
			/*
			$query = 'SELECT w.user_id, w.topic_id, w.counter_user, w.date, u.username, u.user_colour, u.user_id, u.user_avatar, u.user_avatar_type, u.user_avatar_height, u.user_avatar_width, u.user_type, SUM(w.counter_user) 
				AS total
				FROM ' . $this->whovisitedthistopic_table . ' w, ' . USERS_TABLE . ' u
				WHERE w.topic_id = ' . (int) $topic_id . '
					AND w.user_id = u.user_id
				GROUP BY w.user_id
				ORDER BY w.date DESC';
			$row_query = $this->db->sql_query_limit($query, $value);
			*/
			// Old Query	
			
			// New Query
			$query = 'SELECT w.user_id, w.topic_id, w.counter_user, w.date, u.username, u.user_colour, u.user_id, u.user_avatar, u.user_avatar_type, u.user_avatar_height, u.user_avatar_width, u.user_type, SUM(w.counter_user) 
				AS total
				FROM ' . $this->whovisitedthistopic_table . ' w, ' . USERS_TABLE . ' u
				WHERE w.topic_id = ' . (int) $topic_id . '
					AND w.user_id = u.user_id
				GROUP BY w.user_id, w.topic_id, w.counter_user, w.date, u.username, u.user_colour, u.user_id, u.user_avatar, u.user_avatar_type, u.user_avatar_height, u.user_avatar_width, u.user_type
				ORDER BY w.date DESC';
			$row_query = $this->db->sql_query_limit($query, $value);
			// New Query
Find

Code: Alles auswählen

			$sql = 'SELECT topic_id, SUM(counter_user) 
			AS counter
				FROM ' . $this->whovisitedthistopic_table . '
				WHERE topic_id = ' . (int) $topic_id;
			$result = $this->db->sql_query($sql);
			$counter = (int) $this->db->sql_fetchfield('counter');
			$this->db->sql_freeresult($result);
Replace with

Code: Alles auswählen

                        // Old Query
                        /*
			$sql = 'SELECT topic_id, SUM(counter_user) 
			AS counter
				FROM ' . $this->whovisitedthistopic_table . '
				WHERE topic_id = ' . (int) $topic_id;
			$result = $this->db->sql_query($sql);
			$counter = (int) $this->db->sql_fetchfield('counter');
			$this->db->sql_freeresult($result);
			*/
			// Old Query
			
			// New Query
			$sql = 'SELECT topic_id, SUM(counter_user) 
			AS counter
				FROM ' . $this->whovisitedthistopic_table . '
				WHERE topic_id = ' . (int) $topic_id . '
				GROUP BY topic_id';
			$result = $this->db->sql_query($sql);
			$counter = (int) $this->db->sql_fetchfield('counter');
			$this->db->sql_freeresult($result);	
			// New Query
Note: Bcs. of this Fix no changes on SQL-Server Settings sql_mode=only_full_group_by is needed