diff --git a/inc/lektor/database.h b/inc/lektor/database.h
index f157815251e207ee3f8f2caff1b0482e2267827f..1b193ee1d407484b44c4f4d123a208d546426ea4 100644
--- a/inc/lektor/database.h
+++ b/inc/lektor/database.h
@@ -67,6 +67,7 @@ bool database_queue_get_current_file (lkt_db *db, char filepath[PATH_MAX]);
 
 bool database_get_kara_id           (lkt_db *db, char filepath[PATH_MAX], int *id);
 bool database_get_kara_path         (lkt_db *db, int id, char filepath[PATH_MAX]);
+bool database_get_kara_path_no_cache(lkt_db *db, int id, char filepath[PATH_MAX]);
 bool database_get_kara_position     (lkt_db *db, int id, int *pos);
 bool database_get_kara_mtime_id     (lkt_db *db, int id, uint64_t *mtime);
 bool database_get_kara_duration_id  (lkt_db *db, int id, uint64_t *duration);
diff --git a/src/database/cache.c b/src/database/cache.c
index 18deada8944d955d7f467269e21a8f5afd245460..d7c033b864abce6fc3cc88e950f06d62fa15f64c 100644
--- a/src/database/cache.c
+++ b/src/database/cache.c
@@ -60,7 +60,7 @@ database_cache_kara_magic(lkt_db *db, int id)
     /* Get the filepath */
     char filename[PATH_MAX];
     memset(filename, 0, sizeof(filename));
-    database_get_kara_path(db, id, filename);
+    database_get_kara_path_no_cache(db, id, filename);
     if (filename[0] == 0) {
         LOG_ERROR("CACHE", "Failed to get filename for kara %ld", id);
         return;
@@ -152,7 +152,7 @@ database_cache_kara(lkt_db *db, int id)
 {
     char filepath[PATH_MAX];
 
-    if (!database_get_kara_path(db, id, filepath)) {
+    if (!database_get_kara_path_no_cache(db, id, filepath)) {
         LOG_ERROR("CACHE", "Failed to get a path for kara %d, don't update cache", id);
         return;
     }
diff --git a/src/database/queue.c b/src/database/queue.c
index b8f5007deae715b8bd6ccdd485bef0d4da3ba361..9f3f56d1da87e6866f6b1a756ff80bf3adaf3c34 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -900,6 +900,24 @@ error:
     return status;
 }
 
+bool
+database_get_kara_path_no_cache(lkt_db *db, int id, char filepath[PATH_MAX])
+{
+    bool ret_code          = false;
+    sqlite3_stmt *stmt     = NULL;
+    static const char *SQL = "SELECT file_path FROM kara WHERE id = ?;";
+    RETURN_UNLESS(id && db, "Invalid argument", false);
+    SQLITE_PREPARE(db, stmt, SQL, error);
+    SQLITE_BIND_INT(db, stmt, 1, id, error);
+    SQLITE_STEP_ROW(db, stmt, error);
+    if (filepath != NULL)
+        safe_strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX);
+    ret_code = true;
+error:
+    sqlite3_finalize(stmt);
+    return ret_code;
+}
+
 bool
 database_get_kara_path(lkt_db *db, int id, char filepath[PATH_MAX])
 {