Seite 1 von 2

Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 14:18
von DerNordBerliner
Hallöchen,
nach dem Update von "Calendar" unter
http://calendar.zoo-am-ring.de/download/file.php?id=80

erscheint folgende Meldung:

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Unknown column 'anniversary' in 'where clause' [1054]

SQL

SELECT * FROM plattform_calendar WHERE date_from = '2019-12-18' OR date_from <= '2019-12-18' AND date_to >= '2019-12-18' OR date_from <= '2019-12-18' AND date_to = '0000-00-00' AND calendar_repeat > 0 OR date_from LIKE '%-12-18' AND anniversary = 1 ORDER by event_id

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 997
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 196
CALL: phpbb\db\driver\driver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbb\db\driver\mysqli->sql_query()

FILE: [ROOT]/ext/hjw/calendar/includes/calendar_event.php
LINE: 83
CALL: phpbb\db\driver\factory->sql_query()

FILE: [ROOT]/ext/hjw/calendar/event/main_listener.php
LINE: 443
CALL: include('[ROOT]/ext/hjw/calendar/includes/calendar_event.php')

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE: 184
CALL: hjw\calendar\event\main_listener->calendar_on_header()

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE: 46
CALL: Symfony\Component\EventDispatcher\EventDispatcher->doDispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE: 62
CALL: Symfony\Component\EventDispatcher\EventDispatcher->dispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE: 46
CALL: phpbb\event\dispatcher->dispatch()

FILE: [ROOT]/includes/functions.php
LINE: 4254
CALL: phpbb\event\dispatcher->trigger_event()

FILE: [ROOT]/index.php
LINE: 251
CALL: page_header()
Ist das nun ein Fehler in den PHP-Einstellungen und wenn ja, was muss ich ändern?
Und wenn nicht, wo liegt mein Problem?

Gruß Markus

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 15:33
von HJW
Hast du nach dem Update den Kalender deaktiviert und wieder aktiviert?

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 17:25
von DerNordBerliner
HJW hat geschrieben: 18.12.2019 15:33 Hast du nach dem Update den Kalender deaktiviert und wieder aktiviert?
Ich komme ja nicht mal mehr zum LogIn. Nach dem Einspielen der neuen Daten kommt sofort die Fehlermeldung.

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 17:49
von BNa
Betrifft diese Datei

hjw/calendar/includes/calendar_event.php

und SQL-Abfrage ab Zeile 73

Code: Alles auswählen

$sql = 'SELECT *
		FROM ' . CALENDAR_TABLE . "
		WHERE date_from = '" . $year . '-' . $month . '-' . $day . "'
			OR date_from <= '" . $year . '-' . $month . '-' . $day . "'
				AND date_to >= '" . $year . '-' . $month . '-' . $day . "'
			OR date_from <= '" . $year . '-' . $month . '-' . $day . "'
				AND date_to = '0000-00-00' AND calendar_repeat > 0
		  	OR date_from LIKE '%-" . $month . '-' . $day . "'
				AND anniversary = 1 
		ORDER by event_id";
$event_result = $this->db->sql_query($sql);
Ist dann (meist) dieses Problem (Logik und Aufbau der SQL-SELECT Anweisung):
https://stackoverflow.com/questions/153 ... ere-clause
https://stackoverflow.com/a/6137496

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 18:19
von HJW
Das Problem liegt darin, dass beim Update eine neue Spalte 'anniversary' in der Tabelle calendar eingefügt wird. Die wird aber nur eingefügt, wenn man den Kalender deaktiviert, dann das Update hoch lädt und dann den Kalender wieder aktiviert.
Wenn du Zugriff auf deinen Datenbank hast, dann deaktiviere mal den Kalender in der Tabelle (dein Präfix)_ext. Einfach in die Spalte ext_active statt der 1 eine 0 eintragen. Dann solltest du wieder Zugriff haben. Eventuell noch den Cache-Ordner löschen (außer .htaccess und index.htm)

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 18:21
von BNa
Also > Entweder ^ oder RTFM :lol:

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 18:41
von DerNordBerliner
"
HJW hat geschrieben: 18.12.2019 18:19 Das Problem liegt darin, dass beim Update eine neue Spalte 'anniversary' in der Tabelle calendar eingefügt wird. Die wird aber nur eingefügt, wenn man den Kalender deaktiviert, dann das Update hoch lädt und dann den Kalender wieder aktiviert.
Wenn du Zugriff auf deinen Datenbank hast, dann deaktiviere mal den Kalender in der Tabelle (dein Präfix)_ext. Einfach in die Spalte ext_active statt der 1 eine 0 eintragen. Dann solltest du wieder Zugriff haben. Eventuell noch den Cache-Ordner löschen (außer .htaccess und index.htm)
Das wars, Danke.
Muss einem aber auch mal gesagt werden...

Gruß Markus

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 18:47
von HJW
https://www.phpbb.de/kb/ext_install
Aktualisieren einer Erweiterung

Die Erweiterung in der Erweiterungs-Verwaltung im Administrations-Bereich deaktivieren.
Den Ordner <extension-name> innerhalb des Verzeichnisses ext/<autor-name>/ löschen. (Ein Klick auf Daten löschen im Administrations-Bereich tut dies nicht!)
Die Dateien der aktualisierten Erweiterung auf dem Server nach ext/<autor-name>/<extension-name>/ kopieren.
In der Zeile der Erweiterung auf Aktivieren klicken.

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 18.12.2019 20:23
von Kirk
@DerNordBerliner
Im ACP Bereich da wo du die Extensions inst. findet man auch eine Anleitung Punkt "EINE ERWEITERUNG AKTUALISIEREN".

Re: Calendar: Unknown column 'anniversary' in 'where clause' [1054]

Verfasst: 19.12.2019 17:58
von LukeWCS
DerNordBerliner hat geschrieben: 18.12.2019 18:41 Muss einem aber auch mal gesagt werden...
Wie Kirk schon geschrieben hat, wird direkt unter der Liste der Erweiterungen von "Erweiterungen verwalten" erklärt, was zu tun ist:
EINE ERWEITERUNG AKTUALISIEREN
  1. Deaktivieren Sie die Erweiterung
  2. Löschen Sie die Dateien der Erweiterung aus dem Dateisystem
  3. Laden Sie die neuen Dateien hoch
  4. Aktivieren Sie die Erweiterung
und die Kollegen haben ja auch andere Quellen hinsichtlich Vorgehensweise genannt.

Noch eine Ergänzung warum eine Erweiterung vor einem Update deaktiviert werden muss:
  1. Zuerstmal wird die Erweiterung stillgelegt und es finden von dieser keine Zugriffe mehr auf die Datenbank und/oder Dateisystem statt. Gleichzeitig stehen auch Resourcen dieser Erweiterung nicht mehr zur Verfügung, zum Beispiel Template-Variablen. Das deaktivieren einer Erweiterung ist mit dem herunterfahren des PCs vergleichbar.
  2. Wenn eine Erweiterung aktiviert wird, dann - das wissen viele nicht - wird diese eben nicht nur aktiviert, sondern auch immer ein Update-Prozess in Gang gesetzt, sofern ein solcher vom Programmierer definiert wurde. Das ist die sogenannte Migration. Und genau das war hier auch das Problem, wie HJW geschrieben hat.
Es finden bei Aktivierung/Deaktivierung noch weitere Dinge statt, das ist jetzt aber sekundär.

Ein solcher Update-Prozess prüft zuerst welche Version installiert war und welche jetzt vorhanden ist. Wenn eine Ext z.B. in der Version 1.0.0 installiert war und dann per hochladen auf 1.0.3 aktualisiert wurde, dann werden bei Reaktivierung der Erweiterung der Reihe nach die Updates 1.0.1, 1.0.2 und 1.0.3 ausgeführt. Davon bekommt man als Admin nur nichts mit, weil das sehr schnell geht und normalerweise auch keine Anzeige dafür erfolgt. Nicht jede Erweiterung hat/braucht einen solchen Update-Prozess (Migration). Aber alleine schon wegen Punkt a) sollte man die genannte Prozedur immer ausführen, dann ist man auf der sicheren Seite.