sql >> Databáze >  >> RDS >> Mysql

Slick 3.0 (scala) dotazy nevracejí data, dokud nejsou spuštěny několikrát (myslím)

Všechna volání DB se vám vrátí okamžitě s Futures , i když ještě neskončili se svými operacemi. Toto je asynchronní, nikoli synchronní.

Svůj kód můžete změnit tak, aby vyhovoval Futures jedním ze dvou způsobů:

  1. můžete použít Await.result se všemi voláními DB, abyste v tomto okamžiku počkali, dokud nebudou dokončena, například:Await.result(db.run(insertEffect), Duration.Inf)

  2. můžete použít .map (nebo .flatMap pokud používáte jiný Future zevnitř), s kódem, který chcete spustit po dokončení operace DB. Například:db.run(insertEffect).map(_ => ... do stuff... )

Podívejte se na další Stack Overflow vlákno pokud jde o výjimku s několika nápady ohledně příčiny.




  1. Protokoly konfigurace sítě serveru SQL nejsou k dispozici

  2. Geo Proximity Search

  3. Jak najít top 3 topera každého předmětu v dané tabulce

  4. Upozornění:session_start():Nelze odeslat cookie relace – záhlaví již odeslal (výstup začal v