Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les requêtes Slick 3.0 (scala) ne renvoient pas de données tant qu'elles ne sont pas exécutées plusieurs fois (je pense)

Tous les appels DB vous reviendront immédiatement avec Futures , même s'ils n'ont pas terminé leurs opérations. Ceci est asynchrone et non synchrone.

Vous pouvez modifier votre code pour tenir compte des Futures de l'une des deux manières :

  1. vous pouvez utiliser Await.result avec tous les appels de base de données, pour attendre à ce stade jusqu'à ce qu'ils se terminent, par exemple :Await.result(db.run(insertEffect), Duration.Inf)

  2. vous pouvez utiliser .map (ou .flatMap si vous utilisez un autre Future de l'intérieur), avec le code que vous souhaitez exécuter lorsque l'opération de base de données est terminée. Par exemple :db.run(insertEffect).map(_ => ... do stuff... )

Jetez un œil à un autre débordement de pile fil concernant l'exception avec quelques idées quant à la cause.