diff --git a/.gitignore b/.gitignore
index a45c2e8a8167fb7f89916af744378f5b3058171c..f82f949b1705dec2e57dcb4152c14fdeaaf0eb2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,4 +52,5 @@ bin/release/aws-eb/metabase-aws-eb.zip
 coverage-summary.json
 .DS_Store
 bin/node_modules/
-*.log
\ No newline at end of file
+*.log
+*.trace.db
diff --git a/frontend/test/__runner__/test_db_fixture.db.h2.db b/frontend/test/__runner__/test_db_fixture.db.h2.db
index 66876709fb7c85c5d9f9dbd49d36cadd87dccce6..63c055fc2f3b22ff86205785a80e70d60c6ab571 100644
Binary files a/frontend/test/__runner__/test_db_fixture.db.h2.db and b/frontend/test/__runner__/test_db_fixture.db.h2.db differ
diff --git a/src/metabase/cmd.clj b/src/metabase/cmd.clj
index 92a17ce113c73dc822f802372b51531924f224fc..0efcf920bfabc48fa23a1e24ad5a23ee95728eb1 100644
--- a/src/metabase/cmd.clj
+++ b/src/metabase/cmd.clj
@@ -40,7 +40,7 @@
   []
   ;; override env var that would normally make Jetty block forever
   (require 'environ.core)
-  (intern 'environ.core 'env (assoc environ.core/env :mb-jetty-join "false"))
+  (intern 'environ.core 'env (assoc @(resolve 'environ.core/env) :mb-jetty-join "false"))
   (u/profile "start-normally" ((resolve 'metabase.core/start-normally))))
 
 (defn ^:command reset-password
@@ -49,6 +49,12 @@
   (require 'metabase.cmd.reset-password)
   ((resolve 'metabase.cmd.reset-password/reset-password!) email-address))
 
+(defn ^:command refresh-integration-test-db-metadata
+  "Re-sync the frontend integration test DB's metadata for the Sample Dataset."
+  []
+  (require 'metabase.cmd.refresh-integration-test-db-metadata)
+  ((resolve 'metabase.cmd.refresh-integration-test-db-metadata/refresh-integration-test-db-metadata)))
+
 (defn ^:command help
   "Show this help message listing valid Metabase commands."
   []
diff --git a/src/metabase/cmd/refresh_integration_test_db_metadata.clj b/src/metabase/cmd/refresh_integration_test_db_metadata.clj
new file mode 100644
index 0000000000000000000000000000000000000000..7cfd8c45ff56937b9e42251e7572d4d80b699d17
--- /dev/null
+++ b/src/metabase/cmd/refresh_integration_test_db_metadata.clj
@@ -0,0 +1,41 @@
+(ns metabase.cmd.refresh-integration-test-db-metadata
+  (:require [clojure.java.io :as io]
+            [environ.core :refer [env]]
+            [metabase
+             [db :as mdb]
+             [util :as u]]
+            [metabase.models
+             [database :refer [Database]]
+             [field :refer [Field]]
+             [table :refer [Table]]]
+            [metabase.sample-data :as sample-data]
+            [metabase.sync :as sync]
+            [toucan.db :as db]))
+
+(defn- test-fixture-db-path
+  "Get the path to the test fixture DB that we'll use for `MB_DB_FILE`. Throw an Exception if the file doesn't exist."
+  []
+  (let [path (str (System/getProperty "user.dir") "/frontend/test/__runner__/test_db_fixture.db")]
+    (when-not (or (.exists (io/file (str path ".h2.db")))
+                  (.exists (io/file (str path ".mv.db"))))
+      (throw (Exception. (str "Could not find frontend integration test DB at path: " path ".h2.db (or .mv.db)"))))
+    path))
+
+(defn ^:command refresh-integration-test-db-metadata
+  "Re-sync the frontend integration test DB's metadata for the Sample Dataset."
+  []
+  (let [db-path (test-fixture-db-path)]
+    ;; now set the path at MB_DB_FILE
+    (intern 'environ.core 'env (assoc env :mb-db-type "h2", :mb-db-file db-path))
+    ;; set up the DB, make sure sample dataset is added
+    (mdb/setup-db!)
+    (sample-data/add-sample-dataset!)
+    (sample-data/update-sample-dataset-if-needed!)
+    ;; clear out all Fingerprints so we force analysis to run again. Clear out special type and has_field_values as
+    ;; well so we can be sure those will be set to the correct values
+    (db/debug-print-queries
+      (db/update! Field {:set {:fingerprint_version 0, :special_type nil, :has_field_values nil}}))
+    ;; now re-run sync
+    (sync/sync-database! (Database :is_sample true))
+    ;; done!
+    (println "Finished.")))