Autor |
|
stefan Wohnort: Münster
|
"Ihr Account " -> SQL Error?
Geschrieben: 09.06.2007 19:36
vielen Dank für die Unterstützung auch an dieser Stelle.
Die Änderungen sind entsprechend in die Versionen eingeflossen.
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
"Ihr Account " -> SQL Error?
Geschrieben: 09.06.2007 17:32
getan
ich meine das die ältern firebird oder die ibase versionen, weiss nicht mehr genau, das nicht konnten.
grad mal nachgeschaut in interbase 6 doku, da ging das schon.
und Interbase < 6 bekommt man nur noch aus dem Museum
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
"Ihr Account " -> SQL Error?
Geschrieben: 09.06.2007 17:24
Werd es mal recherchieren, aber ich denk schon dass auch mit älteren interbase versionen (mit firebird auf jeden fall) folgendes korrekt war / ist
Spalte hinzufügen:
alter table mytable add column dbtype;
Spalte umbenennen:
alter table mytable alter column to newcolum
Spaltentyp ändern:
alter table mytable alter column type newdbtype
bin gerade dabei driver_ibase aufzuräumen / optimieren:
1. AddRepairField, ChangeRepairField, ChangeColumn schmeiss ich raus
2. Neu hinzu kommt ExecuteColumnChange und ExecuteColumnAdd analog zu mysql nur mit angepasster SQL Syntax
dementsprechend wird sich der true/false block nochmal ändern auf
$this->CanAlterColumnAdd = true;
$this->CanAlterColumnChange = false;
$this->CanAddRepairField = false;
$this->CanChangeRepairField = false;
$this->CanExecuteColumnAdd = true;
$this->CanExecuteColumnChange = true;
das komplette driver_ibase.php schick ich dann aber per Email.
|
|
stefan Wohnort: Münster
|
"Ihr Account " -> SQL Error?
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
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
"Ihr Account " -> SQL Error?
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) ]
|
|
axe
Registriert: 05.11.2006
Beiträge:
58
|
"Ihr Account " -> SQL Error?
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
|
"Ihr Account " -> SQL Error?
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...
|
|
stefan Wohnort: Münster
|
"Ihr Account " -> SQL Error?
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
|
"Ihr Account " -> SQL Error?
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
|
"Ihr Account " -> SQL Error?
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
|
|