Probleme dans utilisation sauvegarde

Fermé
algal - 23 févr. 2017 à 11:47
zucrezel Messages postés 30 Date d'inscription mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 - 24 févr. 2017 à 18:22
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 mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
24 févr. 2017 à 14:37
Bonjour,
Et si tu ajoutes l'exclusion de chaque vue ?
--ignore-table=view1 --ignore-table=view2 --ignore-table=view3
0
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 mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
24 févr. 2017 à 17:09
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
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 mardi 7 février 2017 Statut Membre Dernière intervention 19 juillet 2017 4
24 févr. 2017 à 18:22
oui à mon avis tu peux rechercher uniquement les tables puis tu les indiques dans --tables
0