Wie erstelle ich eine Funktion in PostgreSQL mit Evolutionen im Play-Framework?

8

Mit dem Play Framework 2.1

Ich habe die folgende SQL in meiner Entwicklung definiert:

%Vor%

Wenn ich die Evolution ausführe, erhalte ich den folgenden Fehler:

%Vor%

Ich verwende die PostgreSQL-Treiberversion 9.1-901.jdbc4.

Ich habe die Postgres-Abfrageprotokolle untersucht und herausgefunden, dass Play Folgendes versucht:

%Vor%

Aus irgendeinem Grund versucht Play, SQL in eine Textspalte einzufügen, ohne ordnungsgemäß zu entkommen. Hat jemand anderes eine Arbeit gefunden? Denkst du, das ist ein JDBC-Problem und kein Play-Problem? Hat jemand Liquibase mit Play 2.1?

Auch das Ändern von $$ in 'funktioniert nicht. In diesem Fall erhalten wir einen anderen Fehler, aber wir können die Evolution immer noch nicht ausführen.

Bearbeiten: Ich habe ein Beispiel aus einem brandneuen Spielprojekt hinzugefügt. Bitte downloaden Sie unter: Ссылка

Damit das Beispiel funktioniert, müssen Sie eine neue Datenbank erstellen, wie im ersten Kommentar zur Evolution 1.sql gezeigt. Dann müssen Sie Ihre conf / application.conf konfigurieren, um eine Verbindung zu Postgres auf dem richtigen Port und mit dem richtigen Benutzer herzustellen.

Ich habe gerade ein Experiment gemacht, bei dem ich versuche, die create-Funktion sql ganz außerhalb des Play-Frameworks einzufügen. Das Beispiel ist hier: Ссылка & lt;

Es stellt sich heraus, dass es sehr reproduzierbar ist.

EDIT: Es stellt sich heraus, dass ich es nicht in Java reproduzieren kann.

    
Elijah 06.03.2013, 00:27
quelle

1 Antwort

18

Dies ist ein Artefakt dafür, wie Play Entwicklungen analysiert. Da jede Anweisung mit Semikolons analysiert wird, kann sie gespeicherte Prozedurdefinitionen nicht verarbeiten. Das Problem wurde in Play 2.1 behoben, indem Sie eingebettete Semikola durch Verdoppelung angeben können. Sehen Sie sich zum Beispiel Ссылка an.

Die Verwendung von ;; löste ein ähnliches Problem für mich, mit Play 2.1. Ich würde vorschlagen, dass Sie Ihre Entwicklung wie folgt neu definieren und es erneut versuchen:

%Vor%     
Brian Clapper 25.03.2013, 13:56
quelle