diff --git a/addressbook/backends/file/e-book-backend-file.c b/addressbook/backends/file/e-book-backend-file.c
index 5020a0f..f9382a1 100644
--- a/addressbook/backends/file/e-book-backend-file.c
+++ b/addressbook/backends/file/e-book-backend-file.c
@@ -1109,6 +1109,10 @@ e_book_backend_file_load_source (EBookBackend           *backend,
 	time_t db_mtime;
 	struct stat sb;
 
+#ifdef CREATE_DEFAULT_VCARD
+	gboolean create_default_vcard = FALSE;
+#endif
+
 	dirname = e_book_backend_file_extract_path_from_source (source);
 	filename = g_build_filename (dirname, "addressbook.db", NULL);
 
@@ -1245,14 +1249,8 @@ e_book_backend_file_load_source (EBookBackend           *backend,
 			}
 			else {
 #ifdef CREATE_DEFAULT_VCARD
-				EContact *contact = NULL;
-
-				if (!do_create (bf, XIMIAN_VCARD, &contact, NULL))
-					g_warning ("Cannot create default contact");
-				if (contact)
-					g_object_unref (contact);
+				create_default_vcard = TRUE;
 #endif
-
 				writable = TRUE;
 			}
 		}
@@ -1268,6 +1266,17 @@ e_book_backend_file_load_source (EBookBackend           *backend,
 		return;
 	}
 
+#ifdef CREATE_DEFAULT_VCARD
+	if (create_default_vcard) {
+		EContact *contact = NULL;
+
+		if (!do_create (bf, XIMIAN_VCARD, &contact, NULL))
+			g_warning ("Cannot create default contact");
+		if (contact)
+			g_object_unref (contact);
+	}
+#endif
+
 	if (!e_book_backend_file_maybe_upgrade_db (bf)) {
 		db->close (db, 0);
 		bf->priv->file_db = NULL;
