Autor |
"Ihr Account " -> SQL Error? |
axe
Registriert: 05.11.2006
Beiträge:
58
|
Geschrieben: 09.06.2007 01:34
error: [: ] in EXECUTE("SELECT guestbook_visible, guestbook_captcha, guestbook_html FROM opn_userguestbook_user_data WHERE uid=2")
bei mir gibt es in opn_userguestbook_user_data
weder die Spalte guestbook_captcha noch guestbook_html !?
Alex
|
|
stefan Wohnort: Münster
|
Geschrieben: 09.06.2007 07:27
welche version steht denn bei
admin
-> modulinfos
-> klick auf system/user_guestbook
DB Version?
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Geschrieben: 09.06.2007 11:13
Module system/user_guestbook
Version 2.4
Name Benutzer Gästebuch
DB Version 1.5 (Installierte DB Version: 1.5)
File Version 1.2 (Installierte File Version: 1.2)
Support http://www.openphpnuke.info
Developer OPN Core Devs
Modul SN %%%us39%%%
Modulupdate & Co. hab ich schon 2-3 mal durchgeführt.
|
|
stefan Wohnort: Münster
|
Geschrieben: 09.06.2007 11:28
Da du nicht mysql/sqlite nutzt; könnten wir mal testen ob evt. die update routine da ne macke hat.
versetz mal user_guestbook in die DB Version 1.4 (da sind die felder noch nicht enthalten)
Um das zu tun must du in der DB
Tabelle deinpräfix_opn_opnvcs
die Zeile vcs_progpluginname mit dem wert system/user_guestbook suchen und dort das
vcs_dbversion da steht ein 1.5 drin ändern in ein 1.4
dann sollte danach bei
admin
-> modulinfos
-> klick auf system/user_guestbook
DB Version 1.5 (Installierte DB Version: 1.4)
stehen. Jetzt meint opn das du eine DB Version von 1.4 für das modul hast (hast du ja auch)
du solltest jetzt dort auch ein update schalter haben (war vorher was anderes) oder eben autoupdate laufen lassen auch dort sollte dann er versuchen das modul upzudaten. wenn es da probleme gibt sollten ja sql errors kommen oder eben hinterher die tabelle stimmen
versuch mal falls unklar -> nachfragen
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Geschrieben: 09.06.2007 13:36
Hi,
hab ich mal gemacht, läuft ohne Fehler durch, aber die beiden Felder wurden nicht hinzugefügt.
Grund:
in class.opn_vcs.php wird
if ($opnConfig['opnSQL']->CanAddRepairField) {
$code = '$opnConfig['opnSQL']->AddRepairField ('' . func_get_arg (1) . '', '' . func_get_arg (2) . '', '' . func_get_arg (3) . '');';
}
ausgeführt, dass sollt normalerweise AddRepairField im entsprechenden SQL driver aufrufen. Passiert aber nicht in driver_ibase. die function AddRepairField in driver_ibase.php wird überhaupt nicht aufgerufen.
was stattdessen aufgerufen wird - keine Ahnung, konnte ich bislang nicht finden
|
|
stefan Wohnort: Münster
|
Geschrieben: 09.06.2007 14:02
aha geht die routine überhaupt?
diagnostic
-> Datenbanken überprüfen
sollte dir dann einen "Repair" Vorschlag machen
!bitte nicht! im
OPN in den repariere Profi Modus versetzen
ausführen (in den Einstellungen zufinden)
sonst würde er sofort Versuchen das zu korrigieren und nicht mal ne Meldung geben
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Geschrieben: 09.06.2007 14:04
sorry, muss mich erstmal korrigieren, das AddRepair wird doch korrekt aufgerufen, war ein fehler von mir in meiner Debug-Ausgabe :/ aber jetzt kann ich zumindest weiter schauen wo es dann letzlich hängt...
werd wieder posten wenn ich mehr weiss...
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Geschrieben: 09.06.2007 16:15
Also das Drop table schlägt fehl. Warum weiss ich nicht. Von Hand lässt sich das Statement ausführen.
Werd da aber auch nicht mehr weitersuchen und stattdessen mal die anderen Varianten probieren um eine neue spalte in die DB anzufügen.
dafür die Tabelle zu kopieren, löschen und wieder zurückzukopieren ist ja schon ein wenig overflow nur um eine neue Spalte hinzuzufügen. gibts echt Datenbanken die kein ALTER TABLE ADD ... kennen / können??
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
Geschrieben: 09.06.2007 16:26
bitte driver_ibase.php ändern:
function opn_ibase
von
$this->CanAlterColumnAdd = false;
$this->CanAlterColumnChange = false;
$this->CanAddRepairField = true;
$this->CanChangeRepairField = true;
auf
$this->CanAlterColumnAdd = true;
$this->CanAlterColumnChange = true;
$this->CanAddRepairField = false;
$this->CanChangeRepairField = false;
mit alter table funktioniert das update für die user_guestbook table. AlterColumnChange ist zwar ungetestet, aber sollte auch funktionieren. besser als das löschen und umkopieren ganzer tabellen auf jeden fall.
--------------
Update:
CanChangeRepairField auf true lassen und CanAlterColumnChange auf false.
alter table xyz change abc abc .... funktioniert mit firebird / interbase nicht.
Werde das bei Gelegenheit im driver_ibase anpassen auf andere syntax.
[ Diese Nachricht wurde bearbeitet von: axe am 09.06.2007 16:43 (Originaldatum 09.06.2007 16:26) ]
|
|
stefan Wohnort: Münster
|
Geschrieben: 09.06.2007 16:45
getan
Ich weiss nur nicht ob das bei jeder version geht. ich meine das die ältern firebird oder die ibase versionen, weiss nicht mehr genau, das nicht konnten.
daher der umständliche weg, im mysql wird das nicht so kompleziert gemacht
|
|
|
sortieren nach
|
Seite 1 2 nächste Seite |