Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

As consultas Slick 3.0 (scala) não retornam dados até que sejam executadas várias vezes (eu acho)


Todas as chamadas de banco de dados retornarão para você imediatamente com Futures , mesmo que não tenham concluído suas operações. Isso é assíncrono e não síncrono.

Você pode alterar seu código para acomodar os Futures de duas maneiras:

  1. você pode usar Await.result com todas as chamadas de banco de dados, para aguardar nesse ponto até que elas sejam concluídas, por exemplo:Await.result(db.run(insertEffect), Duration.Inf)

  2. você pode usar .map (ou .flatMap se você estiver usando outro Future de dentro), com o código que você deseja executar quando a operação do banco de dados for concluída. Por exemplo:db.run(insertEffect).map(_ => ... do stuff... )

Dê uma olhada em outro Stack Overflow linha sobre a exceção com algumas idéias sobre a causa.