org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei oder in der Nähe von "$ 1"

9

Ich bekomme diese PSQLException:

%Vor%

Wenn ich den folgenden Code ausführen:

%Vor%

Die Funktion println zeigt dies jedoch in der Konsole an:

%Vor%

Weiß jemand was falsch ist? Die Abfrage in der Konsole läuft in pgAdmin einwandfrei, daher weiß ich, dass es sich nicht um einen Syntaxfehler handelt.

    
Kevin Orriss 10.10.2015, 20:32
quelle

2 Antworten

15

Obwohl die Syntax INTERVAL '30 minutes' gültig ist, wenn Sie SQL direkt in eine Konsole schreiben, wird sie tatsächlich als Intervall-Literal betrachtet und funktioniert nicht mit der Zeichenfolge, die auf das Wort% co_de folgt % ist keine Literalzeichenfolge.

Vorbereitete Anweisungen in PostgreSQL werden serverseitig mit INTERVAL implementiert Jedes PREPARE wird als eine tatsächliche Variable auf dem Server angesehen. Dies ist auch der Grund, warum er sich über ? beschwert, obwohl du nie in deine Aussage geschrieben hast.

Daher funktioniert die Literalsyntax nicht für eine vorbereitete Anweisung.

Lassen Sie sich von der String-Repräsentation (Ergebnis von $ ) der vorbereiteten Anweisung nicht verwirren - es ist nicht das, was der Server sieht. Der Server sieht dort eine Variable.

Daher müssen Sie eine Syntax verwenden, die eine Zeichenfolge (die eine Variable oder ein Literal sein kann) annimmt und in ein Intervall konvertiert. Zum Beispiel println oder ?::INTERVAL .

Dies ist also nicht ein Fehler.

    
RealSkeptic 10.10.2015, 21:34
quelle
-1

Ich glaube, das ist ein Postgres-Bug und so dachte ich an einen schmutzigen Hack, um das zu umgehen ...

%Vor%

Ich frage mich, ob das jemals behoben wird?

    
Kevin Orriss 10.10.2015 21:02
quelle

Tags und Links