Warum bekomme ich eine "Cross-Datenbank-Referenzen sind nicht implementiert"?

10

sehr einfaches Update auf eine Postgresql-Datenbank, und es funktioniert nicht. Die sql select-Anweisung ist in Ordnung und gibt die richtigen Werte zurück.

Wenn ich zum Update komme, wird der Fehler angezeigt:

%Vor%

Ich benutze vb.net und postgresql 9.2.

Ich will nur, dass das Namensfeld so geändert wird, dass es mit der Beschreibung übereinstimmt.

%Vor%

Der Code:

%Vor%     
JimB 22.08.2013, 17:41
quelle

1 Antwort

1

Suchen Sie in Ihrem postgresql-Protokoll nach Fehlern, um zu sehen, was tatsächlich an die Datenbank gesendet wird. Ich weiß nicht, wie ich deinen Code reparieren soll, weil ich die Plattform nicht gut kenne. Außerdem müssen Sie zu parametrisierten Abfragen wechseln, da Ihre aktuelle Methode SQL-Injection-Problemen unterliegt.

Ihr Fehler bedeutet jedoch, dass Sie einen zusätzlichen Namespace haben. Der normale Namespace ist schema.table.column oder schema.table abhängig vom Kontext. Wenn Sie versuchen, eine Tabelle als schema.table.column anzugeben, wird dies als database.schema.table gelesen und dieser Fehler ausgegeben. Wenn Sie einen zusätzlichen Punkt haben, könnten Sie versehentlich database.schema.table.column angeben (was auch den Fehler auslösen würde).

Dies ist Teil eines Grundes, warum stringified SQL wirklich eine schlechte Idee ist, aber die Oberfläche des Problems nicht wirklich kratzt.

    
Chris Travers 11.11.2013 03:29
quelle

Tags und Links