Bonjour,
j’y reviens..
Nouvelle tentative de sauvegarde par SPIP, pour essayer de comprendre :
Tout semble bien se passer jusque là :
29. spip_versions_fragments .
Warning : sprintf() [function.sprintf] : Too few arguments in /homepages/11/[abcdefghij]/htdocs/[monsite]/spip/ecrire/base/connect_sql.php on line 329
. . . . . . (2121)
30. spip_visites . . . . . (1365)
31. spip_visites_articles . . .
où ça bloque ( ça tourne sans arrêt.. ).
Je dois préciser que je n’ai encore tenter aucune maneuvre sur la base en dehors de SPIP ( sauf des tentatives de connexion échouées ).
Il semble qu’ici les 3 tables spip_articles spip_auteurs et spip_rubriques soient correctement sauvegardées.
En vérifiant avec phpmyadmin, pas de pb sur cette table :
requête SQL :
CHECK TABLE spip_versions_fragments
Table Op Msg_type Msg_text
db4xxxxxxxx.spip_versions_fragments check status OK
Je suis timidement resté sur spip 3.0.5 ( +Ahuntsic )
Autre curiosité de ma base :
phpmyadmin m’indique 71 tables, avec
– des tables préfixées spip_ (37) et
– des tables curieusement préfixées XXspip13000_(71-37=34)
(en nombre différents, et avec des statistiques différentes pour les tables que je m’attendais à trouver identiques (tables spip_ et XXspip_ de suffixe homonyme)
Je n’ose pas vous en donner la liste ici (sauf s’il est possible de joindre un fichier, ce que je ne trouve pas.. )
La ligne 329 du fichier ecrire/base/connect_sql.php
est la ligne du switch qui commence par case 1 :
function query_reinjecte_textes($query, $textes)
static $codeEchappements = array("’’"=>"\x1@##@\x1", "\’"=>"\x2@##@\x2", "\\""=>"\x3@##@\x3") ;
# debug de la substitution
#if (($c1=substr_count($query,"%")) !=($c2=count($textes)))
# spip_log("$c1 : :". $query,"tradquery"._LOG_ERREUR) ;
# spip_log("$c2 : :". var_export($textes,1),"tradquery"._LOG_ERREUR) ;
# spip_log("ini : :". $qi,"tradquery"._LOG_ERREUR) ;
#
switch (count($textes))
case 0:break ;
case 1 :$query=sprintf($query,$textes[0]) ;break ;
case 2 :$query=sprintf($query,$textes[0],$textes[1]) ;break ;
case 3 :$query=sprintf($query,$textes[0],$textes[1],$textes[2]) ;break ;
case 4 :$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3]) ;break ;
case 5 :$query=sprintf($query,$textes[0],$textes[1],$textes[2],$textes[3],$textes[4]) ;break ;
default :
array_unshift($textes,$query) ;
$query = call_user_func_array(’sprintf’,$textes) ;
break ;
$query = str_replace(array_values($codeEchappements), array_keys($codeEchappements), $query) ;
return $query ;
S’agirait-il alors d’un bug dans cette fonction ? L’appel à sprintf est mis en question dans le message d’erreur ( pas assez d’arguments) et laisse penser qu’un argument est donc passé par une trappe ! =est-ce à cause de l’état de la base ou d’un BUG de SPIP ? tout cela me dépasse de très loin !
Je n’ose évidemment pas toucher à la base sans avoir de sauvegarde utilisable par moi
J’ai omis de dire que mon site avait été transféré (avec sa base) avant d’être migré en version 3. Il n’y avait eu aucun problème de sauvegarde ni de transfert selon mon souvenir.
Merci à tous pour votre aide et votre patience.