1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 
AlexanderLieb
Benutzer
Avatar
Geschlecht:
Herkunft: Rostock, Deutschland
Alter: 42
Beiträge: 46
Dabei seit: 08 / 2017
Betreff:

1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 · 
Gepostet: 15.12.2017 - 12:32 Uhr  ·  #1
Hallo Community und Entwickler,

ich habe bei meiner neuen CBACK-Installation ein neues Unterforum erstellt und leider lassen sich keinerlei Forenbefugnisse global setzen. Da hake ich alles, was ich brauche an und es ist dann dieser MySQL-Query. Wenn ich es direkt in der MySQL-Datenbank mache, bekomme ich das angezeigt. Hier der Query.

Code
UPDATE cf58_forums SET `forum_auth_see`='2,-1,1', `forum_auth_view`='2,-1,1', `forum_auth_rate`='', `forum_auth_create_topic`='', `forum_auth_reply`='', `forum_auth_importantmarker`='', `forum_auth_report_topic`='', `forum_auth_report_post`='', `forum_auth_delete_topic`='', `forum_auth_delete_post`='', `forum_auth_edit_post`='', `forum_auth_mk_normal`='', `forum_auth_mk_important`='', `forum_auth_mk_announce`='', `forum_auth_mk_global_announce`='', `forum_auth_moderator`='', `forum_auth_poll_create`='', `forum_auth_poll_participate`='', `forum_auth_attachment_post`='', `forum_auth_attachment_download`='', `forum_auth_edit_time`='' WHERE `forum_type`>0 AND `forum_id`=15


Code
#1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1


Ich habe Centos 7.4 mit MySQL 5.5, spricht MariaDB 10.2. Kann ich dieses Problem irgendwie lösen, denn direkt im Forum-ACP funktioniert das Setzen der Forumbefugnisse nicht.

Danke im Vorfeld.

Update 15.12.2017 12:46

Durch das Befugnis-Template hat es nun geklappt, aber einzeln global geht es leider nicht. Ob es an MariaDB 10 liegt oder sonstigem!?
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17610
Dabei seit: 12 / 2003
Betreff:

Re: 1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 · 
Gepostet: 15.12.2017 - 13:24 Uhr  ·  #2
Hallo Alexander,

MariaDB ist insbesondere im strikten Modus hier und da eine kleine Diva, das stimmt. ;)

Kurze Rückfrage allerdings zu dem Problem das mich jetzt neugierig macht:
Kann es sein, dass Du im Feld "Editierzeit" im ACP den Wert ganz rausgemacht hast?
Wenn Du kein Limit für die Editierzeit möchtest, müsstest Du da ja eine 0 eintragen (steht beim Feld dabei unter den Befugnishäkchen).

Falls Du da die 0 weggemacht hast und es leer gelassen hast würde das u.U. erklären, warum das Phänomen bei Dir aufgetreten ist.

Falls dem nicht so ist gibt es noch eine Möglichkeit:
Lies mal die gelbe Box die oben im ACP kommt, sobald Du auf "Global Editieren" gehst. Kann es sein, dass sowas auf Deinem Server aktiv ist? Diese Sicherheitstools schlucken gerne mal zu viele POST Felder und schneiden sie irgendwann ab, das heißt das Forum bekommt dann nur noch unvollständige Werte geschickt und bricht ab, das könnte das Phänomen auch erklären.


Ansonsten nehme ich aber für MariaDB im nächsten Update noch folgende Änderung auf, die eventuelles leermachen der Edit-Felder dann verhindert, damit da keine Bedienfehler entstehen können. Falls interessiert wäre das dann die mögliche Änderung beim nächsten Update in der Datei classes/acp/ACPForums.class.php

FINDE
Code

            $editing = $Core->get(POST, 'edit_time_' . $forumlist[$i]);
            $editing = ($editing < 0)? 0 : $editing;
            $sql_update['forum_auth_edit_time'] = $editing;          


ERSETZE MIT
Code

            $editing = $Core->get(POST, 'edit_time_' . $forumlist[$i]);
            $editing = intval($editing);
            $editing = ($editing < 0)? 0 : $editing;
            $sql_update['forum_auth_edit_time'] = $editing;          



Das macht normal die DB Engine nachträglich automatisch in dem Loop, damit auch falsche Werte abgesichert werden bevor es an die DB geht, aber da fiel es bislang nicht auf. Aber für MariaDB machen wirs dann mal explizit falls einer das Feld leergemacht hat. Ist ja auch sauberer solche Szenarien direkt abzufangen. - Würde dann so im nächsten Update auch nachgetragen.

LG,
Chris
AlexanderLieb
Benutzer
Avatar
Geschlecht:
Herkunft: Rostock, Deutschland
Alter: 42
Beiträge: 46
Dabei seit: 08 / 2017
Betreff:

Re: 1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 · 
Gepostet: 19.12.2017 - 12:44 Uhr  ·  #3
Hi,

vielen Dank für die Erklärung. Der Wert der Editierzeit war bei X Sekunden und nun habe ich es auf Null gesetzt und wollte speichern. Dann trat der Fehler wieder auf. Hm..aber anfangs war der Wert bestimmt auf 0, da ich an der Editierzeit bisher nichts änderte. Jedenfalls ging es dann wie ich oben erzählte.

Ja, das wäre gut, wenn ihr das umsetzen könnt und MariaDB meckert bei etlichen Foren Apps und CMS auch. Da wo MySQL keine Fehler ausgibt, tut es MariaDB. Aber ok, ich habe nun nur diese DB Engine.
Fragz
koffeeinsuechtiger coding freak
Avatar
Geschlecht:
Herkunft: Neuss
Alter: 38
Homepage: fragz.de
Beiträge: 2217
Dabei seit: 03 / 2008
Betreff:

Re: 1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 · 
Gepostet: 19.12.2017 - 13:55 Uhr  ·  #4
Ja der Strict Mode ist hin und wieder Nervig, man kann ihn aber auch deaktivieren ;)

Auf dem Server in der /etc/mysql/my.cf sucht man folgenden Teil

Code
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


und entfernt diesen Part

Code
STRICT_TRANS_TABLES


Danach startet man den SQL Neu.
Wer keinen eigenen Server besitzt, muss sich an den Hoster wenden damit er dies deaktiviert.

Man muss dazu aber auch sagen, das er Strict Mode vor allem beim Entwickeln eine Große Hilfe ist. Auch wenn er nervt, so trägt er dazu bei Software die SQL abhängig ist ein Stück besser zu machen.
AlexanderLieb
Benutzer
Avatar
Geschlecht:
Herkunft: Rostock, Deutschland
Alter: 42
Beiträge: 46
Dabei seit: 08 / 2017
Betreff:

Re: 1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 · 
Gepostet: 19.12.2017 - 23:15 Uhr  ·  #5
Danke Fragz,

so bin ich einen Stück wissensreicher geworden. Da du sagst, dass dieser Mode sich als nützlich erweist, belasse ich es gerne dabei. Bis jetzt war es nur die eine Sache mit den Forenbefugnissen. Wenn es allzu sehr gravierend meine Server-Forum-Installation beeinflussen würde, dann wäre ich deinem Rat gefolgt. Jedenfalls beobachte ich alle Apps nun auf dem neuen Rootserver, dass ja alles funktioniert :)
Fragz
koffeeinsuechtiger coding freak
Avatar
Geschlecht:
Herkunft: Neuss
Alter: 38
Homepage: fragz.de
Beiträge: 2217
Dabei seit: 03 / 2008
Betreff:

Re: 1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 · 
Gepostet: 20.12.2017 - 16:03 Uhr  ·  #6
Gerne.

Zitat geschrieben von AlexanderLieb

Da du sagst, dass dieser Mode sich als nützlich erweist, belasse ich es gerne dabei.


Genau. Im Strict SQL Modus prüft MySQL die Einhaltung der maximale Länge von Primärschlüsseln und lässt fehlende oder ungültige Werte in Insert- oder Update-Anweisungen nicht zu. So wird eben Verhindert das falsche oder fehlende Daten eingetragen werden. Das ist im Grunde der Ansatz des Strict Modus.

Ich habe ihn auch noch aktiviert, lediglich auf einem einzigen System deaktiviert wo es nicht so wichtig ist.

Nur für die Vollständigkeit. Man kann es auch via phpMyAdmin deaktivieren. Einfach die entsprechende Datenbank in phpMyAdmin auswählen und folgenden Code ausführen
Code

SET SESSION sql_mode = "NO_ENGINE_SUBSTITUTION";
AlexanderLieb
Benutzer
Avatar
Geschlecht:
Herkunft: Rostock, Deutschland
Alter: 42
Beiträge: 46
Dabei seit: 08 / 2017
Betreff:

Re: 1366 - Falscher integer-Wert: '' für Feld 'forum_auth_edit_time' in Zeile 1

 · 
Gepostet: 24.12.2017 - 20:06 Uhr  ·  #7
Vielen Dank @Fragz für die Hinweise und die Erklärung. Als beginnender Linux-Admin ist das wichtiges Wissen. Ich hätte es sonst auf Englisch recherchiert!!
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.