Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytania Slick 3.0 (scala) nie zwracają danych, dopóki nie zostaną uruchomione wiele razy (chyba)

Wszystkie wywołania DB wrócą do Ciebie natychmiast z Futures , nawet jeśli nie zakończyli jeszcze swoich operacji. To jest asynchroniczne, a nie synchroniczne.

Możesz zmienić swój kod, aby dostosować się do Futures na jeden z dwóch sposobów:

  1. możesz użyć Await.result ze wszystkimi wywołaniami bazy danych, aby czekać w tym momencie, aż się skończą, na przykład:Await.result(db.run(insertEffect), Duration.Inf)

  2. możesz użyć .map (lub .flatMap jeśli używasz innego Futures od wewnątrz) z kodem, który chcesz uruchomić po zakończeniu operacji bazy danych. Na przykład:db.run(insertEffect).map(_ => ... do stuff... )

Spójrz na inny Stack Overflow wątek odnośnie wyjątku z pewnymi pomysłami co do przyczyny.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy lepiej filtrować zestaw wyników za pomocą klauzuli WHERE, czy za pomocą kodu aplikacji?

  2. Tabela bazy danych nie istnieje zgodnie z kompilatorem Android Studio

  3. Czy bezpieczne jest przechowywanie haseł w postaci zwykłego tekstu w MySQL *tymczasowo*?

  4. Jak połączyć się z różnymi bazami danych w czasie wykonywania?

  5. Monitorowanie baz danych za pomocą MySQL Enterprise Monitor