sql >> Databasteknik >  >> RDS >> Mysql

Slick 3.0 (scala)-frågor returnerar inte data förrän de körs flera gånger (tror jag)

Alla DB-samtal kommer tillbaka till dig omedelbart med Futures även om de inte är klara med sin verksamhet. Detta är asynkront inte synkront.

Du kan ändra din kod så att den passar Futures på ett av två sätt:

  1. du kan använda Await.result med alla DB-anrop, att vänta vid den tidpunkten tills de slutförs, till exempel:Await.result(db.run(insertEffect), Duration.Inf)

  2. du kan använda .map (eller .flatMap om du använder en annan Future inifrån), med kod som du vill köra när DB-operationen är klar. Till exempel:db.run(insertEffect).map(_ => ... do stuff... )

Ta en titt på en annan Stack Overflow tråd angående undantaget med några idéer om orsaken.




  1. postgres:få körbar fråga från fråga med parametrar

  2. Solve kan inte utföra en DML-operation i en fråga

  3. Analysera XML till SQL Server

  4. DÖDA MySQL-frågor med PHP om användaren stänger webbläsaren eller navigerar från en sida till en annan sida