sql >> Base de Datos >  >> RDS >> Mysql

Las consultas Slick 3.0 (scala) no devuelven datos hasta que se ejecutan varias veces (creo)

Todas las llamadas de base de datos volverán a usted inmediatamente con Futures , incluso si no han terminado con sus operaciones. Esto es asíncrono, no síncrono.

Puede cambiar su código para acomodar los Futures de una de dos maneras:

  1. puedes usar Await.result con todas las llamadas DB, para esperar en ese punto hasta que se completen, por ejemplo:Await.result(db.run(insertEffect), Duration.Inf)

  2. puedes usar .map (o .flatMap si estás usando otro Future desde dentro), con el código que desea ejecutar cuando se complete la operación de la base de datos. Por ejemplo:db.run(insertEffect).map(_ => ... do stuff... )

Eche un vistazo a otro desbordamiento de pila hilo con respecto a la excepción con algunas ideas sobre la causa.