diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php
index 9b81ef861aee19bf653416bd06f22840ce89e1b2..37650270530befe0e52ee5c43d883447e46bdd2a 100644
--- a/ecrire/base/upgrade.php
+++ b/ecrire/base/upgrade.php
@@ -119,14 +119,16 @@ function maj_base($version_cible = 0, $redirect = '', $debut_page = true) {
 		"Version anterieure: $version_installee. Courante: " . $GLOBALS['spip_version_base'],
 	);
 	if (!$version_installee || $GLOBALS['spip_version_base'] < $version_installee) {
-		sql_replace(
-			'spip_meta',
-			[
-				'nom' => 'version_installee',
-				'valeur' => $GLOBALS['spip_version_base'],
-				'impt' => 'non'
-			]
-		);
+		if (!$version_installee) {
+			sql_replace(
+				'spip_meta',
+				[
+					'nom' => 'version_installee',
+					'valeur' => $GLOBALS['spip_version_base'],
+					'impt' => 'non'
+				]
+			);
+		}
 		return false;
 	}
 	if (!upgrade_test()) {
diff --git a/ecrire/exec/demande_mise_a_jour.php b/ecrire/exec/demande_mise_a_jour.php
index 65d6924b8de4e8ba85ef502971b4c1a585627b65..558f41e7ab739ba40352eb901f251fddace1aa86 100644
--- a/ecrire/exec/demande_mise_a_jour.php
+++ b/ecrire/exec/demande_mise_a_jour.php
@@ -43,11 +43,17 @@ function exec_demande_mise_a_jour_dist() {
 	echo $commencer_page('', '', '', '', true, false, false);
 
 	echo debut_grand_cadre();
-	echo boite_ouvrir(_T('info_message_technique'), 'notice');
-	echo '<p>' . _T('info_procedure_maj_version') . '</p>',
-		'<p>' . _T('info_administrateur_site_01') . '</p>';
-	echo bouton_action(_T('bouton_mettre_a_jour_base'), generer_url_ecrire('upgrade', 'reinstall=non'));
-	echo boite_fermer();
+	if ($GLOBALS['spip_version_base'] < $GLOBALS['meta']['version_installee'] ?? 0) {
+		echo boite_ouvrir(_T('info_erreur_version_base_plus_recente'), 'error');
+		echo '<p>'._T('info_version_base_plus_recente').'</p>';
+		echo boite_fermer();
+	} else {
+		echo boite_ouvrir(_T('info_message_technique'), 'notice');
+		echo '<p>' . _T('info_procedure_maj_version') . '</p>',
+			'<p>' . _T('info_administrateur_site_01') . '</p>';
+		echo bouton_action(_T('bouton_mettre_a_jour_base'), generer_url_ecrire('upgrade', 'reinstall=non'));
+		echo boite_fermer();
+	}
 	// masquer les erreurs sql sur cette page car proviennent de la base pas a jour !
 	echo '<style type="text/css">#debug-nav {display: none;}</style>';
 	echo fin_grand_cadre();
diff --git a/ecrire/lang/ecrire_fr.php b/ecrire/lang/ecrire_fr.php
index 128ce4cfdc6f4bd78de1207f75c169aa766ab043..979cd81cfd867a2e7bc65fc878a32c268dbde287 100644
--- a/ecrire/lang/ecrire_fr.php
+++ b/ecrire/lang/ecrire_fr.php
@@ -427,6 +427,8 @@ exige d’avoir un accès FTP au site Web.</p>',
 	'info_procedez_par_etape' => 'procédez étape par étape',
 	'info_procedure_maj_version' => 'la procédure de mise à jour doit être lancée afin d’adapter
 	la base de données à la nouvelle version de SPIP.',
+	'info_version_base_plus_recente' => 'La version de SPIP en base de données est plus récente que celle que vous utilisez. Cette opération n\'est pas supportée, mettez à jour votre installation.',
+	'info_erreur_version_base_plus_recente' => 'Erreur d\'installation',
 	'info_proxy_ok' => 'Test du proxy réussi.',
 	'info_ps' => 'P.-S.',
 	'info_publier' => 'publier',