2 Stimmen

Db evolution, oracle mehrzeilig

Ich arbeite mit play 1.2.5,

Ich möchte das DB-Evolution-System mit Oracle 11g Release 2 verwenden.

Aber wenn ich eine mehrzeilige Anfrage habe,

# --- Die Tabelle CHAMP zeigt direkt auf die Tabelle CATEGORIE (keine n:n-Beziehung)

# --- !Ups

    DROP TABLE CATEGORIE_CHAMP;
    ALTER TABLE CHAMP ADD (ID_CATEGORIE NUMBER(38));
    ALTER TABLE CHAMP ADD CONSTRAINT FK_CHAMP_CATEGORIE FOREIGN KEY (ID_CATEGORIE) REFERENCES CATEGORIE(ID_CATEGORIE);

# --- !Downs
  CREATE TABLE "CATEGORIE_CHAMP" 
   (    "ID_CATEGORIE" NUMBER(38,0), 
    "ID_CHAMP" NUMBER(38,0), 
     CONSTRAINT "Categorie_Champ PK" PRIMARY KEY ("ID_CHAMP", "ID_CATEGORIE")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS NOCOMPRESS LOGGING
  TABLESPACE "USERS"  ENABLE, 
     CONSTRAINT "CATEGORIE_CHAMP_CATEGORIE" FOREIGN KEY ("ID_CATEGORIE")
      REFERENCES "RENTIT"."CATEGORIE" ("ID_CATEGORIE") ENABLE, 
     CONSTRAINT "CATEGORIE_CHAMP_CHAMP" FOREIGN KEY ("ID_CHAMP")
      REFERENCES "RENTIT"."CHAMP" ("ID_CHAMP") ENABLE
   ) SEGMENT CREATION DEFERRED 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  TABLESPACE "USERS" ;

 ALTER TABLE CHAMP DROP COLUMN ID_CATEGORIE;

Diese Anfrage funktioniert nicht und wirft einen Fehler :

ORA-00911: ungültiges Zeichen
[ERROR:911, SQLSTATE:22019]
 ungültiges Zeichen. Das Zeichen ist das ;.

Was ist die Lösung für eine mehrzeilige Anfrage?

0voto

deblockt Punkte 91

Zur Information, ich habe das Problem gelöst, ich habe die Klasse play.db.SQLSplitter geändert.

Ich habe Zeile 195 und 196 von :

++i;
CharSequence ret = sql.subSequence(prev, i);

zu :

CharSequence ret = sql.subSequence(prev, i);
++i;

So das abschließende Semikolon wird nicht verwendet und die Anfrage funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X