Seite 1 von 1

SQL Fehler in der we_schedpro.inc.php

Verfasst: Do 4. Apr 2013, 14:06
von szadmin
Hallo zusammen,

eben habe ich eine 6.3.6 Beta 1 auf die aktuelle Stable gebracht. Leider kann man im Anschluss garnicht oder nur mit viiel Geduld die Seite aufrufen.

'MYSQL-ERROR
Fehler: 1064
Detail: Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei ''AND Active=1 AND Wann= AND ClassName="" AND Type="" AND Was=""'' in Zeile 1
Info:
Query: UPDATE WE_tblSchedule SET Active=0, Schedpro="a:0:{}" WHERE DID= AND Active=1 AND Wann= AND ClassName="" AND Type="" AND Was=""'
0 error_handler called at [:]\n#1 query called at [webEdition/we/include/we_modules/schedule/we_schedpro.inc.php:471]

MYSQL-ERROR
Fehler: 1064
Detail: Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei ''AND Active=1 AND ClassName="" AND Type="" AND Was="" AND Wann='' in Zeile 1
Info:
Query: UPDATE WE_tblSchedule SET lockedUntil=lockedUntil+INTERVAL 1 minute WHERE DID= AND Active=1 AND ClassName="" AND Type="" AND Was="" AND Wann=', '2013-04-04 09:55:09', 'SQL Error', 'error_handler', '', 0, '#0 error_handler called at [:]\n#1 query called at [webEdition/we/include/we_modules/schedule/we_schedpro.inc.php:455]

Anscheinend wird in der we_schedpro.inc.php irgendwas nicht richtig abgefangen. Beidesmal ist der Wert DID in der Query nicht befüllt - da in der ScheduleTabelle keine Zeilen vorhanden sind. Den Scheduler verwenden wir beim betroffenen Auftritt sowieso nicht.
Die tblErrorLog wächst dank aktivem Fehlerlogging übrigens ohne Unterlass, 2 GB nach 40 Minuten

Folgende Änderungen helfen mir nun kurzzeitig, eine gute Lösung ist das aber leider nicht

Die Zeile 454 schaut nun wie folgt aus:
while((!$hasLock && ($DB_WE->lock(array(SCHEDULE_TABLE, ERROR_LOG_TABLE))) && ($rec = getHash('SELECT * FROM ' . SCHEDULE_TABLE . ' WHERE Wann<=UNIX_TIMESTAMP() AND lockedUntil<NOW() AND Active=1 ORDER BY Wann LIMIT 1', $DB_WE)))) {

Jetzt funktioniert aber der Scheduler nicht mehr wie er sollte. :-/

In Zeile 456 wurde noch folgendes "verschönert" ...SET lockedUntil=DATE_ADD(lockedUntil, INTERVAL 1 MINUTE)...
...aber dieser Mod ist nicht kriegsentscheidend bei dem aktuellen Problem ^^

Die Modifikationen sind nicht von mir selbst, aber Sie sorgen dafür, dass unser Auftritt wieder ordentlich ausliefert.
Ich konnte diesen "Bug" auch nicht im Bugtracker bzw hier im Forum finden, scheinbar tritt dieser Fehler ja nur selten auf (alternativ hab ichs übersehen).

Gibt es Eurerseits evtl. Ideen oder Vorschläge, was in diesem Fall zu tun ist?

Re: SQL Fehler in der we_schedpro.inc.php

Verfasst: Do 4. Apr 2013, 14:39
von e_herrmann
Hi,
das scheint mir eher ein Fall für die Bugbase, als für das Forum. Dort schauem die Entwickler regelmäßiger rein als hier.

Wenn ihr den Scheduler/Zeitplaner nicht nutzt, versuch doch mal unter Einstellungen>Module den Zeitplaner zu deaktivieren. Vielleicht tritt der Fehler dann nicht mehr auf.

Grüße Elko

Re: SQL Fehler in der we_schedpro.inc.php

Verfasst: Do 4. Apr 2013, 15:14
von szadmin
Ich hätte ja das Modul deaktiviert, wenn ich ins WebEdition reingekommen wäre. Aber schon das hat wg dem Fehler nicht funktioniert!

Danke für den BugtrackerHinweis, ich habs mal eingestellt.

http://qa.webedition.org/tracker/view.php?id=7585

Re: SQL Fehler in der we_schedpro.inc.php

Verfasst: Fr 5. Apr 2013, 10:46
von szadmin
Ok, Problem "gelöst" - der Datenbankuser benötigt LOCK TABLES Rechte.
Diese wurden dem User des betroffenen Webauftritts nicht gewährt.
Das Fazit war ne Endlosschleife

Re: SQL Fehler in der we_schedpro.inc.php

Verfasst: Fr 5. Apr 2013, 17:28
von mokraemer
Zusatzinfo: eigentlich sollte der Kode genau überprüfen ob es das Lock Recht gibt.
Derzeit prüft der Installer/Updater noch nicht ob dieses Recht vorhanden ist (muß noch erweitert werden).
Sofern ein Shop vorhanden ist, oder eine stark frequentierte Seite mit Scheduler benutzt wird, sollte überprüft werden das es dieses Recht gibt, sonst kann es hier zu Fehlern kommen (dies ist eine der wenigen Stellen wo WE Transaktionen benötigt).