Erstellt vor 3 Jahren
Geschlossen vor 3 Jahren
#1738 closed Fehler (fixed)
Entwürfe können nicht gelöscht werden
| Erstellt von: | koga@… | Verantwortlicher: | m.bunkus@… |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | |
| Komponente: | kivitendo ERP | Version: | 2.7.0 unstable |
| Schweregrad: | schwerwiegend | Stichworte: | Verkauf |
| Beobachter: | information@…, werbung2@… |
Beschreibung
Rechnung erfassen - Gelöschte Entwürfe werden nicht dauerhaft gelöscht. Sie werden nach erneutem Aufrufen der Funktion >>Rechnung erfassen<< wieder angezeigt.
Änderungshistorie (8)
comment:1 Geändert vor 3 Jahren durch information@…
- Beobachter information@… hinzugefügt
comment:2 Geändert vor 3 Jahren durch werbung2@…
- Beobachter werbung2@… hinzugefügt
comment:3 Geändert vor 3 Jahren durch information@…
weiterer Hinweis: betrifft auch schon die 2.6.3 sowie die CGI-Variante, allerdings ist meine erste Vermutung falsch, dass es an der Datenbank-Version noch zusätzlich liegt, es muss scheinbar eher etwas anderes noch im Mandanten falsch sein ...
Ich hab jetzt zur Eskalation den Datenbank-Log von postgres hinzugefügt:
CET LOG: execute <unnamed>: DELETE FROM drafts WHERE id IN ($1)
CET DETAIL: parameters: $1 = 'is-invoice-1317977695-203811-790'
Leider wird das delete Kommando ignoriert:
# select id,itime from drafts where id in ('is-invoice-1317977695-203811-790')
;
id | itime
is-invoice-1317977695-203811-790 | 2011-10-07 10:54:55.195811
Irgendeine Idee, fehlende Rollenrechte?
Bug in postgres?!
comment:4 Geändert vor 3 Jahren durch m.bunkus@…
Wohl eher ein vergessenes DB-Commit oder so.
comment:5 Geändert vor 3 Jahren durch information@…
Wohl eher ein vergessenes DB-Commit oder so.
do_query?
Ok, es funktioniert mit folgendem Patch:
SL/Drafts.pm
$query = qq|DELETE FROM drafts WHERE id IN (| . join(", ", map { "?" } @draft_ids) . qq|)|;
do_query($form, $dbh, $query, @draft_ids);
+ $dbh->commit;
Sprich, wenn ich ein händisches Commit nach do_query mache, klappt es ...
Wenn ich in do_query ein dbh->commit einfüge, klappt gar nichts mehr ;-) (selbst das Anmelden schon nicht ...).
comment:6 Geändert vor 3 Jahren durch information@…
Anbei der Unterschied im Log:
Vorher:
CET LOG: execute <unnamed>: DELETE FROM drafts WHERE id IN ($1)
CET DETAIL: parameters: $1 = 'is-invoice-1317977695-203811-790'
Nachher:
CET LOG: execute <unnamed>: DELETE FROM drafts WHERE id IN ($1)
CET DETAIL: parameters: $1 = 'is-invoice-1325506914-873316-24519'
CET LOG: statement: commit
Ich sehe da jetzt kein Problem für diesen Fall, nur mal der Interesse halber, ist autocommit in Lx-Office prinzipiell aus?
Betrifft dieses Verhalten ggf. noch weitere Stellen in Lx-Office?
comment:7 Geändert vor 3 Jahren durch m.bunkus@…
Jein. AutoCommit? ist beim alten Code aus, sofern das DB-Handle mit "$::form->dbconnect_noauto()" oder "$::form->get_standard_dbh()" erzeugt wurde. Alter Code, der noch direkt "$::form->dbconnect()" aufruft, hat es hingegen _an_.
Bei Code, der die Rose::DB::Object-Sachen nutzt, ist es hingegen _an_ (RDBO verlangt das so).
do_query() hat nichts mit Commit zu tun.
comment:8 Geändert vor 3 Jahren durch information@…
- Lösung auf fixed gesetzt
- Status von new nach closed geändert
Ist in Commit 82797ff57236520784217e8bb733e5e7d066ffc7 behoben oder dann in der 2.7

Kann ich bestätigen, tritt allerdings nicht unter allen Umständen auf.
unstable von vorgestern, fcgi aktiviert und postgres 8.4 (ubuntu 10.04), diesselbe Konstellation mit postgres 8.3 funktioniert (debian lenny).
Vom trace her wird die Funktion do_query aufgerufen, scheinbar aber nicht in der Datenbank abgesetzt ...
Ich hab die drafts dann erstmal händisch gelöscht, würde mich aber über mittelfristigen Input von LINET (auch zur Selbsthilfe) freuen.
Jan