2012-05-02 17 views
8

Rozwijam aplikację internetową w Play Framework 2.0.Play Framework i DB2

Ponieważ muszę uzyskać dostęp do bazy danych DB2, dodałem następujące linie do pliku application.conf mojej aplikacji:

db.mydb.driver=com.ibm.db2.jcc.DB2Driver 
db.mydb.url="jdbc:db2://host:port/databaseName" 
db.mydb.user=user 
db.mydb.password=pass 
db.mydb.jndiName=databaseName 

powodzeniem podłączony do tego DB ale dostał następującymi wyjątkami:

[info] play - datasource [jdbc:db2://host:port/databaseName] bound to JNDI as databaseName 
[info] play - database [databaseName] connected at jdbc:db2://host:port/databaseName 
[warn] application - play_evolutions table already existed 
[error] application - 

! @6a8ib4hd7 - Internal server error, for request [GET /] -> 

play.api.UnexpectedException: Unexpected exception [SqlSyntaxErrorException: DB2 
SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2ADMIN.PLAY_EVOLUTIONS, DRI 
VER=4.12.55] 
     at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anon 
fun$1.apply(ApplicationProvider.scala:134) ~[play_2.9.1.jar:2.0] 
     at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anon 
fun$1.apply(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0] 
     at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2] 
     at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply 
(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0] 
     at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply 
(ApplicationProvider.scala:110) ~[play_2.9.1.jar:2.0] 
     at scala.Either$RightProjection.flatMap(Either.scala:277) ~[scala-librar 
y.jar:0.11.2] 
Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-2 
04, SQLSTATE=42704, SQLERRMC=DB2ADMIN.PLAY_EVOLUTIONS, DRIVER=4.12.55 
     at com.ibm.db2.jcc.am.hd.a(hd.java:676) ~[db2jcc4.jar:na] 
     at com.ibm.db2.jcc.am.hd.a(hd.java:60) ~[db2jcc4.jar:na] 
     at com.ibm.db2.jcc.am.hd.a(hd.java:127) ~[db2jcc4.jar:na] 
     at com.ibm.db2.jcc.am.mn.c(mn.java:2621) ~[db2jcc4.jar:na] 
     at com.ibm.db2.jcc.am.mn.d(mn.java:2609) ~[db2jcc4.jar:na] 
     at com.ibm.db2.jcc.am.mn.a(mn.java:2085) ~[db2jcc4.jar:na] 

Aby rozwiązać ten problem, próbowałem wyłączyć zmiany, ustawiając następującą linię w pliku application.conf:

evolutions=disabled 
evolutions.enable=false 

Ale zawsze uzyskuję powyższe wyjątki.

Czy ktoś może mi w tym pomóc?

Dzięki

+0

W dodanymi liniami konfiguracyjny jest literówka, czy jest rzeczywisty parametr nazwany że naprawdę? –

+0

Nie, to literówka, wartości, jakie utworzone są różne ... Nawiasem mówiąc kiedyś: evolutions.enabled = false nie evolutions.enable = false – RedEagle

Odpowiedz

2

A DB2 -204 SQLCODE oznacza:

Obiekt identyfikowany przez nazwę nie jest zdefiniowana w podsystemie DB2®. Ten kod SQLCODE można wygenerować dla dowolnego typu obiektu DB2.

...

Sprawdź, czy nazwa obiektu została poprawnie określona w instrukcji SQL, w tym wszelkich wymaganych kwalifikacjach. Jeśli jest poprawny, upewnij się, że obiekt istnieje w systemie przed ponownym przesłaniem instrukcji.

Wydaje się tabela DB2ADMIN.PLAY_EVOLUTIONS nie istnieje. Jeśli istnieje, spróbuj połączyć się z bazą danych za pomocą klienta SQL i wykonaj komendę select * from DB2ADMIN.PLAY_EVOLUTIONS with ur for read only;, aby sprawdzić, czy tabela istnieje.

Ponadto, prawdopodobnie chcesz użyć zamiast evolutions=disabled (patrz Play Git popełnienia providing a way to disable EvolutionPlugin through configuratio…) w pliku application.conf.

+0

To jest rzecz ...Nadal nie mam żadnego kodu SQL, a Evolutions jest wyłączona (z określoną składnią), więc nie rozumiem, dlaczego polecenia SQL są wykonywane ... – RedEagle

7

OK ... W końcu okazało się, pochodzenie problem ...

Jak mówiłem używam Zagraj Framework 2.0 i działa w formach samouczka projekt, który pochodzi z tej wersji zabawie ...

Jak się okazuje polecenie wyłączenia ewolucji nie jest:

ewolucje = wyłączone ewolucja = wyłączone

... Ale raczej:

evolutionplugin = wyłączone

Dzięki