Willkommen im kivitendo Forum! Hier erweitern und teilen AnwenderInnen und EntwicklerInnen ihr Wissen.

Teste kivitendo!

kivitendo Demo

kivitendo Demo mit Schweizer Kontenplan und neuem Layout

Unterstützt kivitendo mit der Basis-Subskription!

0 Punkte

Hallo,

ich habe die DB von einem Postgres-Server auf einen anderen migriert und zwar so (auf dem neuen Server ausgeführt):

pg_dump -h 192.168.8.2 -p 5433 -U postgres -d db -f db.sql
psql -U postgres -d db -f db.sql > db.log

Ich habe keine Fehler in Terminal bzw. in db.log gesehen.

Danach habe ich den Mandanten entsprechend angepasst, damit die Daten vom neuen DB-Server gelesen/geschrieben werden. Das System scheint allgemein zu funktionieren außer, dass beim Anzeigen von einem Angebot, Auftrag oder Lieferantenauftrag bekomme ich statt der Seite den Fehler:

do_transaction() failed - DBD::Pg::st execute failed: FEHLER:  Müll folgt auf Parameter bei »$3O«
LINE 21: ...g ON (p.partsgroup_id = pg.id) WHERE o.trans_id = $3ORDER BY...
                                                          ^ at /var/www/kivitendo-prod/SL/DBUtils.pm line 148.

Ich wäre dankbar für Tipps, warum das so geworden ist, obwohl die DB fehlerfrei kopiert wurde bzw. ob ich das manuell reparieren kann statt zum früheren DB-Zustand zu gehen, weil heute haben Leute ein paar Stunden mit der neuen DB gearbeitet, bevor der Fehler aufgedeckt wurde.

Beste Grüße
Roman

von (430 Punkte)
Bearbeitet von

2 Antworten

0 Punkte
 
Beste Antwort

Hier meint man, dass sich das Problem eher auf die Anwendung beziehen soll als auf die Daten: https://stackoverflow.com/questions/78341087/migrate-postgre-db-to-a-higher-version-server-remote-server-eg-13-to-15?noredirect=1#comment138114493_78341087

Man meint da, dass wahrscheinlich Parsingregeln in 15 strenger sind als in 13 und das dann so ein Problem auslöst.

von (430 Punkte)
ausgewählt von

Die Jungs in StackOverflow haben Recht.

Wir haben das Problem in 2023 behoben, s.a.:

git show 1b3c222ec9

Die kivitendo Version 3.6.1 ist auch nie gegen Postgres 15 geprüft worden, am Besten ist es immer die Postgres-Version zu verwenden, die auch für die entsprechende kivi-Version als getestet empfohlen wird.

Vielleicht hilft die Info fürs nächste Upgrade-Szenario.

Ansonsten cool, den Fehler einmal bei StackOverflow einfach reinzuhauen ...

Gruß

Jan

0 Punkte

Das sehe ich in PSQL-Logs:

2024-04-17 12:40:41.701 CEST [246485] postgres@db FEHLER:  Müll folgt auf Parameter bei »$3O« bei Zeichen 1892
2024-04-17 12:40:41.701 CEST [246485] postgres@db ANWEISUNG:  SELECT o.id AS orderitems_id,
                   c1.accno AS inventory_accno, c1.new_chart_id AS inventory_new_chart, date('10.01.2024') - c1.valid_from as inventory_valid,
                   c2.accno AS income_accno,    c2.new_chart_id AS income_new_chart,    date('10.01.2024') - c2.valid_from as income_valid,
                   c3.accno AS expense_accno,   c3.new_chart_id AS expense_new_chart,   date('10.01.2024') - c3.valid_from as expense_valid,
                   oe.ordnumber AS ordnumber_oe, oe.transdate AS transdate_oe, oe.cusordnumber AS cusordnumber_oe,
                   p.partnumber, p.part_type, p.listprice, o.description, o.qty,
                   p.classification_id,
                   o.sellprice, o.parts_id AS id, o.unit, o.discount, p.notes AS partnotes, p.part_type,
                   o.reqdate, o.project_id, o.serialnumber, o.ship, o.lastcost,
                   o.ordnumber, o.transdate, o.cusordnumber, o.subtotal, o.longdescription,
                   o.price_factor_id, o.price_factor, o.marge_price_factor, o.active_price_source, o.active_discount_source,
                   pr.projectnumber, p.formel,
                   pg.partsgroup, o.pricegroup_id, (SELECT pricegroup FROM pricegroup WHERE id=o.pricegroup_id) as pricegroup
                 FROM orderitems o
                 JOIN parts p ON (o.parts_id = p.id)
                 JOIN oe ON (o.trans_id = oe.id)
                 LEFT JOIN chart c1 ON ((SELECT inventory_accno_id                   FROM buchungsgruppen WHERE id=p.buchungsgruppen_id) = c1.id)
                 LEFT JOIN chart c2 ON ((SELECT tc.income_accno_id  FROM taxzone_charts tc WHERE tc.taxzone_id = $1 and tc.buchungsgruppen_id = p.buchungsgruppen_id) = c2.id)
                 LEFT JOIN chart c3 ON ((SELECT tc.expense_accno_id FROM taxzone_charts tc WHERE tc.taxzone_id = $2 and tc.buchungsgruppen_id = p.buchungsgruppen_id) = c3.id)
                 LEFT JOIN project pr ON (o.project_id = pr.id)
                 LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) WHERE o.trans_id = $3ORDER BY o.trans_id, o.position

Anscheinend ist das Problem hier: "$3ORDER BY", was vllt. "$3 ORDER BY" sein sollte.

Die Version des DB-Server ist leider ungleich. Auf dem alten Server:

~$ apt list postgresql
Auflistung… Fertig
postgresql/oldstable,now 13+225+deb11u1 all  [installiert]

und auf dem neuen:

~# apt list postgresql
Auflistung… Fertig
postgresql/stable,now 15+248 all  [installiert]

Ich habe aber gelesen, dass die Rückwartskompatibilität zwischen den 2 in Ordnung sein sollte.

von (430 Punkte)

Kivitendo 3.6.1

Ähnliche Fragen

0 Punkte
2 Antworten
Gefragt 10, Apr 2014 von Anonym
0 Punkte
1 Antwort
0 Punkte
2 Antworten
...