diff --git a/resources/frontend_client/app/card/card.controllers.js b/resources/frontend_client/app/card/card.controllers.js
index b65f1fc0664246cf8417ade0d8461ef9a8445ede..840544f6e37f302e6c892b4cb0f931798b1caba3 100644
--- a/resources/frontend_client/app/card/card.controllers.js
+++ b/resources/frontend_client/app/card/card.controllers.js
@@ -608,13 +608,16 @@ CardControllers.controller('CardDetail', [
                         if (databases[i].id === databaseId) {
                             card.dataset_query.database = databaseId;
 
-                            // load metadata
-                            editorModel.loadDatabaseInfoFn(card.dataset_query.database);
                         }
                     }
+                }
+
+                if (card.dataset_query.database != null) {
+                    // load metadata
+                    editorModel.loadDatabaseInfoFn(card.dataset_query.database);
 
                     // if we initialized our database safely and we have a table, lets handle that now
-                    if (card.dataset_query.database !== null && $routeParams.table !== undefined) {
+                    if ($routeParams.table != null) {
                         // TODO: do we need a security check here?  seems that if they have access to the db just use the table
                         card.dataset_query.query.source_table = parseInt($routeParams.table);