Probleme dans utilisation sauvegarde

algal -  
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

mysql 5.5.20
J'ai un problème dans mes sauvegardes
voici l'ordre que j'utilise : je ne demande que les tables
mysqldump -h localhost -uUser -pPWD Nom_base --verbose --compress --tables > Nom_base_sauve .sql

lorsque je remonte la base, je m’aperçois qu'il me restaure certaines vues en tant que tables (pas toutes mais un nombre conséquent) ceci i a pour effet de rendre les vues de la base restaurée inutilisable (elles sont devenue des tables)

Une idée serait très bienvenue, merci d'avance


A voir également:

4 réponses

zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour,
Et si tu ajoutes l'exclusion de chaque vue ?
--ignore-table=view1 --ignore-table=view2 --ignore-table=view3
0
algal
 
Merci de ta réponse, mais c'est trop fastidieux, j'ai plusieurs bases, avec chacune 150 à 200 vues, en plus la sauvegarde est en automatique dans un script linux et il faut penser aller modifier le script chaque fois qu'il y a une nouvelle vue. Je pourrais aussi nommer chaque table à sauvegarder mais c'est le même problème il faut penser à modifier le script chaque fois qu'il y a une nouvelle table ou si il y en a une qui disparaît (sinon erreur).
L’idéal serait un script linux qui interroge la base pour avoir le nom des tables et qui fasse la sauvegarde. Comme ca je serais sur d'avoir une liste à jour. Mais je sais pas faire !
0
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
Et avec du vieux code php qui va chercher les vues et qui les exclut avec --skip-triggers ?
<?php

if (is_array($argv) && count($argv)>3) {
    $database=$argv[1];
    $user=$argv[2];
    $password=$argv[3];
}
else {
    echo "Usage php mysqdump.php <database> <user> <password>\n";
    exit;
}

$link = mysql_connect('localhost', $user, $password);


if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$source = mysql_select_db('$database', $link);
$sql = "SHOW FULL TABLES IN `$database` WHERE TABLE_TYPE LIKE 'VIEW';";
$result = mysql_query($sql);
$views=array();
while ($row = mysql_fetch_row($result)) {
   $views[]="--ignore-table={$database}.".$row[0];
}
//pas de vues ni de triggers
echo passthru("mysqldump -u root --password=\"$password\" $database --skip-triggers ".implode(" ",$views));

?>
0
algal
 
ah! ah! ça s'essaye excellente bonne idée !
mais plutot lister les tables et oublier les vues non ?
Merci
0
zucrezel Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   4
 
oui à mon avis tu peux rechercher uniquement les tables puis tu les indiques dans --tables
0