播放2.6演变postgresql:关系“ play_evolutions”不存在

Gle*_*eeb 5 postgresql database-migration playframework-2.0

我正在尝试游戏的发展和后期,但是似乎有些不起作用。

我已经阅读了播放文档中的说明。似乎游戏不想使用我指定的驱动程序

    db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/application"
db.default.logSql=true
db.default.user="postgres"
db.default.password=""
Run Code Online (Sandbox Code Playgroud)

启动应用程序时,我得到以下信息:

  12:23:58.475 [play-dev-mode-akka.actor.default-dispatcher-2] [ERROR]- org.jdbcdslog.StatementLogger(24) - java.sql.Statement.executeQuery: select id, hash, apply_script, revert_script, state, last_problem from play_evolutions where state like 'applying_%';
    throws exception: org.postgresql.util.PSQLException: ERROR: relation "play_evolutions" does not exist
      Position: 72
    org.postgresql.util.PSQLException: ERROR: relation "play_evolutions" does not exist
      Position: 72
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2182)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1911)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:173)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:645)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:481)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:361)
        at com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:111)
        at com.zaxxer.hikari.pool.HikariProxyStatement.executeQuery(HikariProxyStatement.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.jdbcdslog.StatementLoggingHandler.invoke(StatementLoggingHandler.java:27)
        at com.sun.proxy.$Proxy21.executeQuery(Unknown Source)
        at play.api.db.evolutions.DatabaseEvolutions.executeQuery(EvolutionsApi.scala:316)
        at play.api.db.evolutions.DatabaseEvolutions.checkEvolutionsState(EvolutionsApi.scala:270)
        at play.api.db.evolutions.DatabaseEvolutions.databaseEvolutions(EvolutionsApi.scala:135)
        at play.api.db.evolutions.DatabaseEvolutions.scripts(EvolutionsApi.scala:110)
        at play.api.db.evolutions.DatabaseEvolutions.scripts(EvolutionsApi.scala:125)
        at play.api.db.evolutions.DefaultEvolutionsApi.scripts(EvolutionsApi.scala:90)
        at play.api.db.evolutions.ApplicationEvolutions$$anonfun$play$api$db$evolutions$ApplicationEvolutions$$runEvolutions$1.apply$mcV$sp(ApplicationEvolutions.scala:53)
        at play.api.db.evolutions.ApplicationEvolutions.withLock(ApplicationEvolutions.scala:100)
        at play.api.db.evolutions.ApplicationEvolutions.play$api$db$evolutions$ApplicationEvolutions$$runEvolutions(ApplicationEvolutions.scala:49)
        at play.api.db.evolutions.ApplicationEvolutions$$anonfun$start$1.apply(ApplicationEvolutions.scala:42)
        at play.api.db.evolutions.ApplicationEvolutions$$anonfun$start$1.apply(ApplicationEvolutions.scala:42)
        at scala.collection.immutable.List.foreach(List.scala:392)
        at play.api.db.evolutions.ApplicationEvolutions.start(ApplicationEvolutions.scala:42)
        at play.api.db.evolutions.ApplicationEvolutions.<init>(ApplicationEvolutions.scala:151)
        at play.api.db.evolutions.ApplicationEvolutionsProvider.get$lzycompute(EvolutionsModule.scala:49)
        at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:49)
        at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:40)
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
        at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
        at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
        at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
        at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:84)
        at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:185)
        at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
        at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
        at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$1.apply(DevServerStart.scala:174)
        at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$1.apply(DevServerStart.scala:171)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1.reload(DevServerStart.scala:171)
        at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1.get(DevServerStart.scala:124)
        at play.core.server.AkkaHttpServer.play$core$server$AkkaHttpServer$$modelConversion(AkkaHttpServer.scala:183)
        at play.core.server.AkkaHttpServer.play$core$server$AkkaHttpServer$$handleRequest(AkkaHttpServer.scala:189)
        at play.core.server.AkkaHttpServer$$anonfun$5.apply(AkkaHttpServer.scala:106)
        at play.core.server.AkkaHttpServer$$anonfun$5.apply(AkkaHttpServer.scala:106)
        at akka.stream.impl.fusing.MapAsync$$anon$23.onPush(Ops.scala:1172)
        at akka.stream.impl.fusing.GraphInterpreter.processPush(GraphInterpreter.scala:499)
        at akka.stream.impl.fusing.GraphInterpreter.processEvent(GraphInterpreter.scala:462)
        at akka.stream.impl.fusing.GraphInterpreter.execute(GraphInterpreter.scala:368)
        at akka.stream.impl.fusing.GraphInterpreterShell.runBatch(ActorGraphInterpreter.scala:571)
        at akka.stream.impl.fusing.GraphInterpreterShell$AsyncInput.execute(ActorGraphInterpreter.scala:457)
        at akka.stream.impl.fusing.GraphInterpreterShell.processEvent(ActorGraphInterpreter.scala:546)
        at akka.stream.impl.fusing.ActorGraphInterpreter.akka$stream$impl$fusing$ActorGraphInterpreter$$processEvent(ActorGraphInterpreter.scala:725)
        at akka.stream.impl.fusing.ActorGraphInterpreter$$anonfun$receive$1.applyOrElse(ActorGraphInterpreter.scala:740)
        at akka.actor.Actor$class.aroundReceive(Actor.scala:514)
        at akka.stream.impl.fusing.ActorGraphInterpreter.aroundReceive(ActorGraphInterpreter.scala:650)
        at akka.actor.ActorCell.receiveMessage(ActorCell.scala:527)
        at akka.actor.ActorCell.invoke(ActorCell.scala:496)
        at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
        at akka.dispatch.Mailbox.run(Mailbox.scala:224)
        at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
        at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
        at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
        at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
    12:23:58.543 [play-dev-mode-akka.actor.default-dispatcher-2] [INFO]- org.jdbcdslog.StatementLogger(10) - java.sql.Statement.execute: 
          create table play_evolutions (
              id int not null primary key,
              hash varchar(255) not null,
              applied_at timestamp not null,
              apply_script text,
              revert_script text,
              state varchar(255),
              last_problem text
          )
        ;
Run Code Online (Sandbox Code Playgroud)

小智 0

这是正确的行为,因为它是检查表是否存在的 try-catch 样式。在日志末尾,您可以在存在检查后看到有关表创建的消息

 12:23:58.543 [play-dev-mode-akka.actor.default-dispatcher-2] [INFO]- org.jdbcdslog.StatementLogger(10) - java.sql.Statement.execute: 
          create table play_evolutions (
              id int not null primary key,
              hash varchar(255) not null,
              applied_at timestamp not null,
              apply_script text,
              revert_script text,
              state varchar(255),
              last_problem text
          )
        ;
Run Code Online (Sandbox Code Playgroud)

通常你必须忽略这个错误