Je dois réaliser une backup de mysql mais seulement de certains enregistrements.
Voici les tables simplifiées :
Table “membres” :
id_membre (int, PK) | is_guest (bool)
Table “membre_posts” :
id_membre (int, FK) | some_data (varchar)
Pour dumper tout les enregistrement de la table membre et membre_posts avec une contrainte commune (ex id_membre), pas de probleme :
mysqldump -u bck_user -p****** --quick --add-locks --lock-tables --complete-insert
--where="id_membre>2000" MABASE membres membre_posts > c:\test.sql
Maintenant plus dur je souhaite dumper les enregistrements de la table membres et ceux de la table membre_posts dont les id_membre ont dans la table membres is_guest==1
mysqldump -u bck_user -p****** --quick --add-locks --lock-tables
--complete-insert --where="id_membre IN(SELECT id_membre FROM MABASE.membres
WHERE MABASE.membre.is_guest=1)"
MABASE membre membre_posts > c:\test.sql
Et bien sur là ça ne marche pas il me dit :
Tables MABASE.membres has not been locked with READ LOCK
Je comprends l’erreur, mais je n’ai aucune idée comment placer un verrou sur cette table car jamais je pourrai poser un LOCK sur cette table dans le meme thread où s’exécutera mysqldump…
Quelqu’un a t’il une idée ou d’autres outils pour faire des dumps comme ceux la ?
merci
Edité le 11/11/2007 à 22:34