L'accés concurentiel [Résolu]

Signaler
Messages postés
97
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
28 mai 2010
-
Messages postés
97
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
28 mai 2010
-
Bonjour,
j'ai pensé a faire un traitement sur l'accées a ma base de données, càd lorsque quelqu'un veux s'inscrir sur mon site web et en meme moment une autre personne veux faire la meme opération, alors jai pensé a faire le code suivant:

$sql = "INSERT  INTO connexion(Id,champ1,champ2)
  VALUES ( NULL, '$champ1','$champ2') " ;

 mysql_query("LOCK TABLES connexion WRITE");
mysql_query("SET AUTOCOMMIT = 0");
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
//......traitement
mysql_query("COMMIT");
mysql_query("UNLOCK TABLES");
mais lorsque j'exécute je reçois l'erreur suivante:

Table 'proc' was not locked with LOCK TABLES
est ce que vous avez une idée sur ce genre de problème
Merci d'avance.
A voir également:

4 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Ben...

MySQL permet de gérer les permissions de chaque utilisateur.
Les utilisateurs MySQL créés pour les hébergements ont toujours les permissions suivantes sur LEUR BASE :
Pour les données :
- SELECT
- INSERT
- UPDATE
- DELETE
- FILE
Pour la structure des tables :
- CREATE
- ALTER
- INDEX
- DROP
- CREATE TEMPORARY TABLES
- CREATE VIEW
- SHOW VIEW
- CREATE ROUTINE
- ALTER ROUTINE
- EXECUTE
Pour l'administration, rien du tout.

OR, LOCK et UNLOCK requierent un privilège d'administration pour être exécutées.

Juste comme ça... Pourquoi souhaites tu verrouiller une table ? Les deux actions ont très peu de chances de se produire exactement en même temps et PHP et MySQL savent très bien gérer ça et l'une des deux se produira forcément avant l'autre.
Par ailleurs, si tu verrouilles une table et que ton script met un peu de temps à s'exécuter pour une raison X ou Y, et qu'une autre isntance du script essaye d'accéder à la table, alors ça bloquera, alors que MySQL se serait très bien dépatouillé tout seul.
Verrouiller une table est utile si tu souhaites faire des opérations de maintenance dessus. C'est généralement utilisé pour des applications autres que PHP.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Est-ce tu as les permissions pour utiliser LOCK et UNLOCK ? C'est pas forcément le cas selon ton hébergeur.
Messages postés
97
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
28 mai 2010

qu'est que tu veux dire par les permissions, explique moi svp??
Messages postés
97
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
28 mai 2010

ok merci pour vos réponses, je penserai a ce que vous m'avez dis .
bon weekend