WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 15.05.2021 15:40:54

berny
Member

mpForm settings table Row too large

So, Dank Colinax ist jetzt mal die Installation auf den neuesten Stand.
derzeit wirft aber mpForm noch folgenden Fehler aus:

2021-05-15T09:47:16+00:00 [Warning] /modules/mpform/modify.php:[115] from /admin/pages/modify.php:[166] "Use of undefined constant TP_MPFORM - assumed 'TP_MPFORM' (this will throw an Error in a future version of PHP)"

2021-05-15T09:47:16+00:00 [Exception] There was an unknown exception: Call to a member function numRows() on null in line (118) of /modules/mpform/modify.php

2021-05-15T09:47:19+00:00 [Warning] /modules/mpform/paintform.php:[248] from /framework/frontend.functions.php:[391] "Use of undefined constant TP_MPFORM - assumed 'TP_MPFORM' (this will throw an Error in a future version of PHP)"

Folgende Installation:

WBCE Version: 1.5.0-beta.1
Tag: 1.5.0-beta.1
PHP Version: 7.3.28

php könnte ich noch auf eine 7.4er hochheben.

mpForm Version 1.3.37

@mrbaseman: könntest du das mal ansehen ?

Offline

Liked by:

colinax

#2 15.05.2021 15:50:35

florian
Administrator

Re: mpForm settings table Row too large

Ich glaube nicht, dass mrbaseman das hier finden / lesen wird.

Frage: Gibt es die Datei /modules/mpform/constants.php und/oder die Datei /modules/mpform/constants.user.php?

Ist in (einer von) beiden der folgende Code vorhanden?

if(!defined('TP_MPFORM')){
    define('TP_MPFORM', TABLE_PREFIX."mod_mpform_");
}

Offline

#3 15.05.2021 16:16:20

colinax
Administrator

Re: mpForm settings table Row too large

florian wrote:

Frage: Gibt es die Datei /modules/mpform/constants.php und/oder die Datei /modules/mpform/constants.user.php?

Sind beide vorhanden, aber beide sind leer.

Ich lad mal schnell die Dateien frisch hoch

Offline

#4 15.05.2021 16:21:35

florian
Administrator

Re: mpForm settings table Row too large

Die constants.user.php braucht es nicht unbedingt, aber die constants.php sollte nicht leer sein, siehe
https://github.com/mrbaseman/mpform/blo … stants.php

Offline

#5 15.05.2021 16:44:49

colinax
Administrator

Re: mpForm settings table Row too large

Hab die Dateien frisch neu hochgeladen und angepasst dass diese mit einer installierten Struktur identisch sind.

Bis auf

2021-05-15T14:38:10+00:00 [Notice] /modules/mpform/paintform.php:[268] from /framework/frontend.functions.php:[391] "Undefined index: multiple_files"

sind alle Problemchen weg und im Frontend funktioniert auch alles, soweit ich es sagen kann.

Das Update auf die WBCE 1.5.0 stable werde auch ich durchführen, dann werde ich sehen ob die Serverkonfiguration die Probleme verursacht.

Offline

#6 15.05.2021 16:51:20

florian
Administrator

Re: mpForm settings table Row too large

Hm, wegen der vorherigen leeren constants-Dateien ist die modules/mpform/upgrade.php wahrscheinlich nicht korrekt ausgeführt worden. Die Notice deutet darauf hin, dass in der Datenbank in der Tabelle {table_prefix}mpform_settings die Zeile multiple_files fehlt. Vielleicht hilft es schon, nochmal die upgrade.php über Erweiterungen > Module auszuführen, sonst müsste via Adminer o.ä. die Zeile händisch ergänzt werden (multiple_files vom Typ  BOOL NOT NULL DEFAULT '1').

Last edited by florian (15.05.2021 16:52:12)

Offline

#7 15.05.2021 17:15:24

colinax
Administrator

Re: mpForm settings table Row too large

ok, hab das mit manuellem Upgrade versucht, sowie es aussieht gibt es ein Problem mit der DB, dass aber nicht als error erkannt wird:

Updating database for module: mpForm
Adding new fields to the settings table
Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
Adding new fields to the fields table
Search function updated successfully
Adding new field(s) to the submissions table
Adding putting css files in place

kann es sein dass die DB mit dem BOOL Probleme hat?

Offline

#8 15.05.2021 17:55:32

florian
Administrator

Re: mpForm settings table Row too large

Am Bool liegts nicht, eher an der Anzahl der Zeilen. Das müsste sich dann wohl doch mal mrbaseman anschauen und die mpform Settings evtl. auf mehrere Tabellen aufteilen.

Offline

#9 15.05.2021 19:09:21

colinax
Administrator

Re: mpForm settings table Row too large

Beitrag vom Ursprungsthread abgetrennt, aufgrund anderer Problemstellung.

Edit der Ursprung dieser Unterhaltung ist hier.

Last edited by colinax (15.05.2021 19:14:03)

Offline

#10 16.05.2021 22:32:13

mrbaseman
Developer

Re: mpForm settings table Row too large

Es ist die Gesamtlänge einer Zeile, die da wohl Probleme macht (Summe aller Feldlängen plus noch etwas Overhead). Ich sollte TEXT statt VARCHAR verwenden. Dafür geht dann aber wieder kein DEFAULT-Wert, d.h. man muss die Werte in jedem INSERT oder UPDATE Statement explizit angeben. Ich schau mal, bei welchen Feldern das eventuell ohnehin der Fall ist. Dann könnte ich die wenigstens in TEXT konvertieren, was wohl nicht mit zu der Zeilenlänge zäht, da sie irgendwie intern anders gespeichert werden.

Offline

#11 16.05.2021 23:18:10

colinax
Administrator

Re: mpForm settings table Row too large

Was wäre wenn man einfach die ganzen VARCHAR(255) die mit email in der settings table zu tun haben auf VARCHAR(150) ändert, sollte eigentlich für die Zwecke reichen oder?

Offline

#12 17.05.2021 06:59:26

florian
Administrator

Re: mpForm settings table Row too large

Liegt das nun an der Tabellenstruktur als solcher oder an den Werten, die eingetragen sind? D.h. wird das Problem im konkreten Fall möglicherweise dadurch ausgelöst, dass in einem oder mehreren Feldern sehr viel Inhalt steht (Seiten-, Maileinstellungen o.ä.), so dass nach Kürzen/Auslagern der betr. Inhalte dann auch die fehlende Zeile ergänzt werden kann?

Offline

#13 17.05.2021 12:54:42

colinax
Administrator

Re: mpForm settings table Row too large

florian wrote:

Liegt das nun an der Tabellenstruktur als solcher oder an den Werten, die eingetragen sind?

Laut Internet, was ich verstanden habe, sowohl als auch.

Das Problem ist wie es gespeichert wird, es kann in  der Zeile gespeichert werden (int, varchar) oder eben "wo anders" (Text), in diesem Fall wird nur in der Zeile gespeichert wo das "wo anders" ist und das belegt dann auch ca. nur 8-12 byte.

Die Berechnung funktioniert ungefähr so:

https://dba.stackexchange.com/questions/114471/calculate-row-size-and-max-row-size-for-a-table wrote:

20 English characters: 2 + 1*20

also 3byte*255 +2  = 767 die settings table hat 8x varchar(255) + 1x varchar(255) um die anderen kleinen zusammen zufassen = 6 903 dann noch 6x INT das dürfte dann soviel ergeben, dass das BOOL in den 8126 nicht mehr platz hat.

wenn ich es richtig verstanden habe dürfte dass bei utf8mb4 noch interessanter werden, da jedes Zeichen nicht 3 byte sondern 4 byte belegt

edit: Berechnung korrigiert und an den max Wert angehoben

Last edited by colinax (17.05.2021 12:58:36)

Offline

#14 17.05.2021 23:07:57

mrbaseman
Developer

Re: mpForm settings table Row too large

An den bereits eingetragenen Werten liegt es meiner Meinung nach nicht, sondern schon an der Tabellenstruktur, die eben für manche Einträge 255 Zeichen reserviert. 

Ferner spielt wohl der Zeichensatz eine Rolle (wie viele Bytes dann pro Zeichen belegt werden) und weleche Datenbank-Engine eingesetzt wird und in welchem Modus diese läuft... siehe z.B. https://mariadb.com/kb/en/troubleshooti … th-innodb/

Man kann die VARCHAR sicher teilweise herunterkürzen, manche davon dienen aber als Basis für Auswahllisten und beinhalten u.U. mehrere Email-Adressen samt Beschreibung... Da würde ich ungern anfangen zu kürzen. Um das Modul sql-Strict kompatibel zu machen, habe ich da manche einfach von TEXT auf die maximal mögliche VARCHAR-Länge umgestellt - ohne zu ahnen, dass wir damit jetzt auf ein neues Problem stoßen. Da wohl TEXT Inhalte nicht wesentlich beitragen, aber dafür in ihrer Länge nicht begrenzt sind, würde ich lieber das ein oder andere Feld weider auf TEXT umstellen und die anderen Stellen flicken, an denen dann nicht auf einen Defailt-Wert zurückgegriffen werden kann. Das ist aber wahrscheinlich ein bisschen Arbeit... mal schauen.

Offline

#15 17.05.2021 23:19:00

bernd
Developer

Re: mpForm settings table Row too large

Ich war bisher immer der Meinung, das VARCHAR eben nur die "benutze" Länge (+ 1 byte) für die Längenangabe belegt,
im Gegensatz zu CHAR welches immer die Gesamtlänge belegt ?!?
Das legt eigentlich auch diese Übersicht (ca. Mitte der Seite) nahe.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#16 18.05.2021 08:48:10

florian
Administrator

Re: mpForm settings table Row too large

Merkwürdig. Ich habe mal auf ein paar Testsysteme geschaut:
-  auf dem einen Server läuft MySQL 5.7, Speicherengine MyISAM, Kollation latin1_swedish_ci;
- auf dem anderen MariaDB 10.5.10, Engine InnoDB, Kollation utf8mb4_general_ci.
Bei beiden ist die Spalte multiple_files vorhanden. Möglicherweise ist es doch kein grundsätzliches Problem, sondern hängt irgendwie mit der individuellen Datenbankkonfiguration auf dem Server zusammen, auf dem das Problem auftritt.

Last edited by florian (18.05.2021 08:48:52)

Offline

#17 18.05.2021 17:50:54

berny
Member

Re: mpForm settings table Row too large

Phu, da hab ich wieder was angezettelt  roll

Offline

Board footer

up