diff --git a/ecrire/base/upgrade.php b/ecrire/base/upgrade.php
index d88299724658adf191efcde8cee3a4233bad1041..5a4e2f3f52f3172fdb3d5107de8459f62b371647 100644
--- a/ecrire/base/upgrade.php
+++ b/ecrire/base/upgrade.php
@@ -59,7 +59,7 @@ function maj_base($version_cible = 0) {
 		return;
 	}
 	if (!upgrade_test()) return;
-
+	
 	$cible = ($version_cible ? $version_cible : $spip_version);
 
 	if ($version_installee <= 1.926) {
@@ -168,6 +168,10 @@ function upgrade_test() {
 	sql_alter("TABLE spip_test ADD b INT");
 	sql_insertq('spip_test', array('b' => 1), array('b' => 'int'));
 	$result = sql_select('b', "spip_test");
+	// ne pas garder le resultat de la requete sinon sqlite3 
+	// ne peut pas supprimer la table spip_test lors du sql_alter qui suit
+	// car cette table serait alors 'verouillee'
+	$result = $result?true:false; 
 	sql_alter("TABLE spip_test DROP b");
 	return $result;
 }
diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php
index 3aef4f6e7efca6d6a12dd92f8c4373d3673ea916..0a8fa5b113700b61b7043fc55b0ee0177396b8aa 100644
--- a/ecrire/req/sqlite_generique.php
+++ b/ecrire/req/sqlite_generique.php
@@ -136,7 +136,7 @@ function spip_sqlite_alter($query, $serveur=''){
 	$requete = new sqlite_traiter_requete("ALTER $query", $serveur);
 	$requete->traduire_requete(); // mysql -> sqlite
 	$query = $requete->query;
-		
+	
 	/* 
 	 * la il faut faire les transformations
 	 * si ALTER TABLE x (DROP|CHANGE) y
@@ -172,8 +172,8 @@ function spip_sqlite_alter($query, $serveur=''){
 		$colonne_origine = $matches[2];
 		$colonne_destination = '';
 		$def = $matches[3];
+		
 			
-
 		switch($cle){
 			// allez, on simule, on simule !
 			case 'DROP':
@@ -330,6 +330,14 @@ function spip_sqlite_delete($table, $where='', $serveur='') {
 
 function spip_sqlite_drop_table($table, $exist='', $serveur='') {
 	if ($exist) $exist =" IF EXISTS";
+	
+	/* simuler le IF EXISTS - version 2 */
+	if ($exist && _sqlite_is_version(2, '', $serveur)){
+		$a = spip_sqlite_showtable($table, $serveur); 
+		if (!$a) return true;
+		$exist = '';
+	}
+	
 	return spip_sqlite_query("DROP TABLE$exist $table", $serveur);
 }
 
@@ -646,7 +654,7 @@ function spip_sqlite_showtable($nom_table, $serveur=''){
 	if (!$a) return "";
 	if (!($a = spip_sqlite_fetch($a, null, $serveur))) return "";
 	$a = array_shift($a); 
-	if (!preg_match("/^[^(),]*\((([^()]*\([^()]*\)[^()]*)*)\)[^()]*$/", $a, $r))
+	if (!preg_match("/^[^(),]*\((([^()]*(\([^()]*\))?[^()]*)*)\)[^()]*$/", $a, $r))
 		return "";
 	else {
 		$dec = $r[1];