Hallo,
bei einem Import meiner Daten bekomme die Fehlermeldung “missing FROM clause entry for table”
Hier mal der genaue Befehl: *psql -h localhost database -c " update data set … where data… notnull"
*
Was heisst das bzw. was kann ich darunter verstehen…
Danke erstmal fuer dein Feedback.
Das aendern der Postgresql.conf hat leider kein Erfolg gebracht.
Leider finde ich auch keine Loesung wie ich es umschreiben koennte. Daher poste ich mal die gesamten String: Mit der hoffnung das Du mir einen Tip geben kannst.
Befehl:
psql -h localhost bayelva -c
“update data set battery_ws=temptable_climate.avg_battery
where data.time=temptable_climate.time and temptable_climate.avg_battery notnull”
ERROR:
Missing FROM-clause entry for table “temptable_climate” at character 28 STATEMENT:
update data set battery_ws=temptable_climate.avg_battery where data.time=temptable_climate.time and temptable_climate.avg_battery notnull
PG neu gestartet bzw. ein Reload der Config ausgelöst?
Leider finde ich auch keine Loesung wie ich es umschreiben koennte. Daher poste ich mal die gesamten String: Mit der hoffnung das Du mir einen Tip geben kannst.
Befehl:
psql -h localhost bayelva -c
“update data set battery_ws=temptable_climate.avg_battery
where data.time=temptable_climate.time and temptable_climate.avg_battery notnull”
ERROR:
Missing FROM-clause entry for table “temptable_climate” at character 28 STATEMENT:
update data set battery_ws=temptable_climate.avg_battery where data.time=temptable_climate.time and temptable_climate.avg_battery notnull
Okay. Ich zeige es noch einmal:
test=# create table t1 (i int, val text);
CREATE TABLE
test=*# create table t2 (i int, val text);
CREATE TABLE
test=*# commit;
COMMIT
test=# update t1 set val=t2.val where t1.i=t2.i;
ERROR: missing FROM-clause entry for table "t2"
test=!# rollback;
ROLLBACK
test=# update t1 set val=t2.val from t2 where t1.i=t2.i;
UPDATE 1
test=*# rollback;
ROLLBACK
test=# set add_missing_from = on;
SET
test=*# update t1 set val=t2.val where t1.i=t2.i;
NOTICE: adding missing FROM-clause entry for table "t2"
UPDATE 1
Entweder Du bringst Deinen Code in Ordnung (die fehlende Tabelle in die from-Klausel einsetzen) oder den Würgaround mit dem set add_missing_from, was auch per Session wie gezeigt funktioniert. Das für Deinen Einsatz anzupassen überlasse ich Dir zur Übung.
Komischer weise muss die DB die Settingeinstellung nun gefressen haben.
Die Ausgabe gibt mir nun eine Ausgabe.:
*NOTICE: ADDING MISSING FROM-CLAUSE ENTRY FOR TABLE…
*
Kann ich dies als Problemlos hinnehmen? Sprich greift nun hier das Setting und findet selber die Tabelle von der die Daten kommen?
Ja. Du solltest dennoch versuchen, das SQL zu reparieren. Möglicherweise wird eine spätere Version dies dann strenger handhaben. Aber derzeit ist es nur ein Hinweis und kein Fehler.