diff --git a/src/metabase/driver/sql_jdbc/execute.clj b/src/metabase/driver/sql_jdbc/execute.clj index 3ba5d028ac308d85797603948cb1867b56651d6c..2b4fea71b5961b94e2cba69201c2a8b2d6d45af8 100644 --- a/src/metabase/driver/sql_jdbc/execute.clj +++ b/src/metabase/driver/sql_jdbc/execute.clj @@ -348,9 +348,16 @@ (log/tracef "Setting default connection options with options %s" (pr-str options)) (set-best-transaction-level! driver conn) (set-time-zone-if-supported! driver conn session-timezone) - (set-role-if-supported! driver conn (cond (integer? db-or-id-or-spec) (qp.store/with-metadata-provider db-or-id-or-spec - (lib.metadata/database (qp.store/metadata-provider))) - (u/id db-or-id-or-spec) db-or-id-or-spec)) + (when-let [db (cond + ;; id? + (integer? db-or-id-or-spec) + (qp.store/with-metadata-provider db-or-id-or-spec + (lib.metadata/database (qp.store/metadata-provider))) + ;; db? + (u/id db-or-id-or-spec) db-or-id-or-spec + ;; otherwise it's a spec and we can't get the db + :else nil)] + (set-role-if-supported! driver conn db)) (let [read-only? (not write?)] (try ;; Setting the connection to read-only does not prevent writes on some databases, and is meant