Impossible de vider une table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Impossible de vider une table

par rspir » 13 sept. 2006, 21:19

Voila le code du php.
C'est relativement simple :

	$connexion = connexion(user, pass, bdd, server);// connexion à la base
	  
	//$requete = "flush tables"; Flush tables pour vider le cache ?
	//ExecRequete ($requete, $connexion);

	$requete = "truncate matable"; //raz de la table
	ExecRequete ($requete, $connexion);

	$content=file("source/file.txt");//accès au fichier txt
	
	foreach($content as $num=>$ligne) // récupération du contenu
	{
	   $var1=substr($ligne,0,8); 						
	   $var2=substr($ligne,8,8);						
	   $var3=substr($ligne,16,17);					
	   $var4=substr($ligne,33,8);						
	   $var5=addslashes(substr($ligne,41,128));		
	   $var6=substr($ligne,169,8);					
	   $var7=addslashes(substr($ligne,177,128));		
          $var8=addslashes(substr($ligne,305,32));		
	   $var9=substr($ligne,337,5);					
	   $var10=substr($ligne,342,32);					
	   $var11=substr($ligne,374,3);					
	   $var12=substr($ligne,377,11);					
	   $var13=substr($ligne,496,1);					
	   $var14=substr($ligne,497,1); 					
	
	$requete = "INSERT INTO matable (dr, grp,id,nature,nom,code,adresse,ville,cp,fax,client,swift,gab,handicap) VALUES ('$var1','$var2','$var3','$var4','$var5','$var6','$var7','$var8','$var9','$var10','$var11','$var12','$var13','$var14')";
	ExecRequete ($requete, $connexion);

par Cyrano » 13 sept. 2006, 20:21

Mouais, ben c'est à priori pas là qu'est le problème : donc il faut voir quelles actions sont exécutées avant de faire un TRUNCATE et qui laissent la table ouverte.

par rspir » 13 sept. 2006, 20:17

Ceci te suffit il ?
CREATE TABLE `matable` (
`ligne` int(11) NOT NULL auto_increment,
`dr` varchar(8) NOT NULL,
`grp` varchar(8) NOT NULL,
`id` varchar(17) NOT NULL,
`nature` varchar(8) NOT NULL,
`nom` varchar(128) NOT NULL,
`code` varchar(8) NOT NULL,
`adresse` varchar(128) NOT NULL,
`ville` varchar(32) NOT NULL,
`cp` varchar(5) NOT NULL,
`fax` varchar(32) NOT NULL,
`client` varchar(3) NOT NULL,
`swift` varchar(11) NOT NULL,
`gab` varchar(1) NOT NULL,
`handicap` varchar(1) NOT NULL,
`maj` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`ligne`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
En fait j'importe un fichier de 2000 enregistrements.
Il s'agit d'un fichier plat (txt) avec une longueur d'enregistrement de 4300 caractères.
Ma requete va faire des substr dans les zones qui m'interesse pour ensuite écrire dans la table

par Cyrano » 13 sept. 2006, 10:11

Cette erreur est curieuse : pourrait-on voir la structure de ta base, enfin à tout le moins pour les tables concernées ?

par rspir » 13 sept. 2006, 08:50

Bonjour

Quelqu'un a t'il une idée sur le sujet ?
En fait j'importe un fichier texte de 10Mo. Est ce lié ?

Mon souci devient embetant : en local je peux faire un Flush Tables mais je n'ai pas les privilèges ad hoc chez mon hébergeur.

Que faire ?

par rspir » 09 sept. 2006, 22:48

up
Il y a des manières plus élégantes de faire remonter son sujet. Les "up", c'est énervant.
j'en conviens : c'est corrigé. :oops:

par ouckileou » 09 sept. 2006, 22:40

up
Il y a des manières plus élégantes de faire remonter son sujet. Les "up", c'est énervant.

par rspir » 09 sept. 2006, 22:34

Quelqu'un a t'il une idée pour mon problème ?

Impossible de vider une table

par rspir » 05 sept. 2006, 15:52

Bonjour

A chaque fois que je fais un truncate de ma table, j'obtiens le message :
MyISAM table 'matable' is in use (most likely by a MERGE table). Try FLUSH TABLES.
Savez vous d'ou provient ce message ?

EDIT : ce message apparait après que j'ai importé environ 2000 enregistrements depuis un fichier texte assez volumineux. J'arrive à contourner le problème avec la commande FLUSH qui,d'après la doc, ferme toutes les tables ouvertes, et force les tables utilisées à se refermer. Cela vide aussi le cache de requêtes. Savez vous pourquoi je suis obigé de procéder ainsi ? Sur d'autres fichiers que j'importe, je n'ai pas le problème.