[3.3] SQL-Fehler (out of range)

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Jay2k1
Mitglied
Beiträge: 4
Registriert: 01.04.2025 16:49

[3.3] SQL-Fehler (out of range)

Beitrag von Jay2k1 »

Moin,

ich hab heute einen lustigen Fehler reinbekommen. Ein User wollte einen Thread öffnen, dabei bekam er einen "General Error":
Out of range value for column 'topic_views' at row 1
Wie sich herausstellt, hat topic_views den Datentyp MEDIUMINT, und der geht halt nur bis 16.777.215... und tatsächlich:

[ externes Bild ]

DB-Designer: "Wie viele views kann ein thread schon kriegen..."
Unsere Foristen: "Hold my beer" :D

Das Forum ist auch schon 23 Jahre alt, da kann das wohl mal passieren :D

Die Lösung war natürlich, den Datentyp auf INT umzustellen. Nun können noch 255 mal so viele Views dazukommen, bis es wieder kracht.
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 12113
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: [3.3] SQL-Fehler (out of range)

Beitrag von Crizzo »

Hi,

Welche phpBB Version habt ihr denn?
Jay2k1
Mitglied
Beiträge: 4
Registriert: 01.04.2025 16:49

Re: [3.3] SQL-Fehler (out of range)

Beitrag von Jay2k1 »

3.3.13 ist das.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Re: [3.3] SQL-Fehler (out of range)

Beitrag von Dr.Death »

Datenbank Backup erstellen und anschliessend das mal testen:

Vorausgesetzt, dein Tabellen Präfix lautet phpbb_

Code: Alles auswählen

ALTER TABLE `phpbb_topics` CHANGE `topic_views` `topic_views` INT(8) UNSIGNED NOT NULL DEFAULT '0';

Edit: bin zu langsam, hatte nicht gesehen, dass Du das bereits umgestellt hast...... ( /me muss seine Brille putzen und die Sense schärfen.... )
Jay2k1
Mitglied
Beiträge: 4
Registriert: 01.04.2025 16:49

Re: [3.3] SQL-Fehler (out of range)

Beitrag von Jay2k1 »

Moin, danke, das hab ich schon längst. Ich fand das nur amüsant und wollte andere daran teilhaben lassen :)

Im schema.json steht auch UINT drin, und eine Migration hab ich auch gefunden:

Code: Alles auswählen

phpbb/db/migration/data/v30x/release_3_0_0.php:						'topic_views'	=> array('UINT', 0),
Warum das bei dem Forum noch auf MEDIUMINT stand, weiß ich auch nicht... Das Forum muss ursprünglich mal ein 2.x gewesen sein, da es im April 2002 gestartet wurde. Irgendwo auf dem Weg hat dann wohl eine Migration nicht gegriffen...
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2962
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] SQL-Fehler (out of range)

Beitrag von LukeWCS »

Hallo

Interessantes Problem. Als du das hier gepostet hattest, hab ich mir ebenfalls zumindest stichprobenweise die Migration von 3.3 bis zurück zu 3.0 angeschaut und wie du festgestellt, dass die Spalte den Typ UNSIGNED-MEDIUMINT hat, aber eigentlich UNSIGNED-INT sein sollte.

Daraufhin habe ich meine 4 lokalen TBs in der DB angeschaut. Ich habe ein 3.1, 3.2 und 3.3 TB. Das 3.1 ist die Basis, also keine Vorgeschichte. 3.2 ist ein Klon von 3.1 mit Upgrade auf 3.2. Gleiches Spiel beim 3.3 TB, das ist ein Klon von 3.2 mit Upgrade auf 3.3. Daneben habe ich noch ein weiteres 3.3 ohne Vorgeschichte, also effektiv als 3.3 installiert. Aber auch da ist, wie in den anderen 3, der Typ UNSIGNED-MEDIUMINT, obwohl die Migration ganz klar etwas anderes "sagt". Des Weiteren ist das bei einem 3.0 definitiv noch als UNSIGNED-MEDIUMINT definiert gewesen, aber schon seit 3.1 ist das als UNSIGNED-INT definiert.

Das heisst der Fehler muss weit zurückliegen und "irgendwo" in der Migration 3.0->3.1 seine Ursache haben.
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1274
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: [3.3] SQL-Fehler (out of range)

Beitrag von Mike-on-Tour »

Jetzt habt ihr mich neugierig gemacht und ich habe mal stichprobenartig einige meiner TBs gecheckt, Ergebnis:
In allen ist es ein mediumint(8), außer in dem ganz neu angelegten mit phpBB 3.3.15 RC1, da ist es int(10). Also auch bei den TBs, die mal als 3.3.x angelegt wurden, ist die Migration offensichtlich nicht so gelaufen wie geplant. Wo aber jetzt der Grund dafür liegt... :-?
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2962
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] SQL-Fehler (out of range)

Beitrag von LukeWCS »

Mike-on-Tour hat geschrieben: 01.04.2025 19:04 außer in dem ganz neu angelegten mit phpBB 3.3.15 RC1, da ist es int(10).
Ahja! Da ich das eine 3.3 TB frisch installiert hatte (ohne Vorgeschichte ) und vermutlich damals dazu ein 3.3.0 benutzt habe und bei deinem 3.3.15-rc1 TB der Fehler behoben ist, hiesse dass 2 Dinge:

1. Der Migrationsfehler muss "irgendwo" ab 3.3.1+ behoben worden sein.
2. Bei phpBB's die vor Version 3.3.{unbekannt} installiert wurden, bleibt der Fehler bestehen.
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2962
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] SQL-Fehler (out of range)

Beitrag von LukeWCS »

Update und Korrektur

@Jay2k1

1. Die Annahme das UINT für UNSIGNED INTEGER steht ist zwar naheliegend, aber falsch. Da haben wir uns beide irritieren lassen. :wink: Im phpBB Core fand ich ein assoziatives Array mit dem die Kürzel der Migrationsdateien in ihre tatsächlichen Strings konvertiert werden. Daraus der relevante Ausschnitt:

Code: Alles auswählen

				'ULINT'		=> 'INT(10) UNSIGNED',
				'UINT'		=> 'mediumint(8) UNSIGNED',
2. Daraus folgt; die Annahme es handle sich um einen Migrationsfehler ist ebenfalls falsch. Also habe ich mir gezielt die Migration von 3.3.15-rc1 angeschaut, denn bei 3.3.14 ist es definitiv noch UNSIGNED-MEDIUMINT. Ich wurde auch schnell fündig bei

phpBB3\phpbb\db\migration\data\v33x\topic_views_update.php

Code: Alles auswählen

	public function update_schema(): array
	{
		// This extends the topic view count field so we can support much larger values.
		return [
			'change_columns' => [
				$this->table_prefix . 'topics' => [
					'topic_views'  => ['ULINT', 0],
				],
			]
		];
	}

	public function revert_schema(): array
	{
		return [
			'change_columns' => [
				$this->table_prefix . 'topics' => [
					'topic_views'  => ['UINT', 0],
				],
			]
		];
	}
Das heisst unterm Strich: erst bei 3.3.15 wird der Zahlentyp von topic_views auf UNSIGNED INTEGER geändert und hat dann den Maximalwert 4294967295.
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Jay2k1
Mitglied
Beiträge: 4
Registriert: 01.04.2025 16:49

Re: [3.3] SQL-Fehler (out of range)

Beitrag von Jay2k1 »

Sauber recherchiert!

Die Nomenklatur ist also etwas irreführend. Und das eigentliche Problem ist gelöst, aber die Lösung noch nicht released. Was für ein Timing. :D
Antworten

Zurück zu „Support-Forum“