Опция :timeout
вызывает .setQueryTimeout
для вызова PreparedStatement
, используемого под колпаком clojure.java.jdbc
. Он находится в секундах , а не в миллисекундах, поэтому ваш запрос должен быть очень медленным в течение 2000 секунд (чуть более получаса), чтобы его действие вступило в силу.
JDB C поддерживает несколько разных таймаутов в нескольких классах. Например, javax.sql.DataSource
поддерживает .setLoginTimeout
(также в секундах), как и java.sql.DriverManager
.
Существуют также параметры базы данных c, которые можно добавить в строку подключения (которую можно добавить как дополнительные пары ключ / значение в вашей «db-spe c») для контроля таймаутов нижнего уровня. Например, MySQL поддерживает connectionTimeout
и socketTimeout
в строке подключения - и оба они находятся в миллисекундах . clojure.java.jdbc
позволяет указывать их на вашей карте "db-spe c" ha sh как :connectTimeout
и :socketTimeout
соответственно.
Обратите внимание, что clojure.java.jdbc
считается "стабильным" «на данный момент и все текущие и будущие усилия по разработке сосредоточены на next.jdbc
на данный момент. next.jdbc
упрощает использование loginTimeout
, поскольку он работает непосредственно с объектами JDB C, поэтому доступен весь (Java) API. Он также имеет встроенную поддержку для пулов соединений и в целом проще и быстрее, чем clojure.java.jdbc
.