diff --git a/rust-bins/duniter-dbex/src/migrate.rs b/rust-bins/duniter-dbex/src/migrate.rs
index b7d249987b76757dedf86d6ec04ae27220c60275..65a76b96b722f7c6d95f55745bd4f95ad4ad9013 100644
--- a/rust-bins/duniter-dbex/src/migrate.rs
+++ b/rust-bins/duniter-dbex/src/migrate.rs
@@ -26,7 +26,7 @@ const CHUNK_SIZE: usize = 250;
 
 pub(crate) fn migrate(profile_path: PathBuf) -> anyhow::Result<()> {
     let start_time = Instant::now();
-    let (bc_db, shared_dbs) = duniter_dbs::open_dbs(Some(profile_path.as_path()));
+    let (bc_db, shared_dbs) = duniter_dbs::open_dbs(Some(profile_path.as_path()))?;
     let gva_db = duniter_gva_db_writer::get_gva_db_rw(Some(profile_path.as_path()));
 
     // Clear bc_db and gva_db
diff --git a/rust-libs/duniter-dbs/src/open_dbs.rs b/rust-libs/duniter-dbs/src/open_dbs.rs
index 04ae6264a4cf3aaffb28bfe9a4e91dc2a3e48610..f20687b4764f37c84ea76dc824a5cd33b088a92f 100644
--- a/rust-libs/duniter-dbs/src/open_dbs.rs
+++ b/rust-libs/duniter-dbs/src/open_dbs.rs
@@ -21,12 +21,11 @@ use crate::*;
 
 pub fn open_dbs<B: BackendConf>(
     profile_path_opt: Option<&Path>,
-) -> (crate::databases::bc_v2::BcV2Db<B>, SharedDbs<B>) {
+) -> KvResult<(crate::databases::bc_v2::BcV2Db<B>, SharedDbs<B>)> {
     let bc_db = crate::databases::bc_v2::BcV2Db::<B>::open(B::gen_backend_conf(
         crate::databases::bc_v2::BcV2Db::<B>::NAME,
         profile_path_opt,
-    ))
-    .expect("fail to open BcV2 DB");
+    ))?;
     let dbs = SharedDbs {
         bc_db_ro: bc_db.get_ro_handler(),
         cm_db: crate::databases::cm_v1::CmV1Db::<Mem>::open(MemConf::default())
@@ -34,15 +33,13 @@ pub fn open_dbs<B: BackendConf>(
         dunp_db: crate::databases::dunp_v1::DunpV1Db::<B>::open(B::gen_backend_conf(
             "dunp_v1",
             profile_path_opt,
-        ))
-        .expect("fail to open Dunp DB"),
+        ))?,
         txs_mp_db: crate::databases::txs_mp_v2::TxsMpV2Db::<B>::open(B::gen_backend_conf(
             crate::databases::txs_mp_v2::TxsMpV2Db::<B>::NAME,
             profile_path_opt,
-        ))
-        .expect("fail to open TxsMp DB"),
+        ))?,
     };
-    (bc_db, dbs)
+    Ok((bc_db, dbs))
 }
 
 pub trait BackendConf: Backend {
diff --git a/rust-libs/duniter-server/src/lib.rs b/rust-libs/duniter-server/src/lib.rs
index 8235de295977d64d9bc0bab6ecc99ee05b02236e..795f8930b1cb4ca93b8a524d1051655de0de4dd1 100644
--- a/rust-libs/duniter-server/src/lib.rs
+++ b/rust-libs/duniter-server/src/lib.rs
@@ -115,7 +115,7 @@ impl DuniterServer {
         let txs_mempool = TxsMempool::new(conf.txs_mempool_size);
 
         log::info!("open duniter databases...");
-        let (bc_db, dbs) = duniter_dbs::open_dbs(profile_path_opt);
+        let (bc_db, dbs) = duniter_dbs::open_dbs(profile_path_opt)?;
         dbs.dunp_db.heads_old_write().clear()?; // Clear WS2Pv1 HEADs
         log::info!("Databases successfully opened.");
         let current = duniter_dbs_read_ops::get_current_block_meta(&dbs.bc_db_ro)