Stockage et Sauvegardes - Sauvegarde automatique base de donnée
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

Sauvegarde automatique base de donnée

Von
MarcelB
Erstellungsdatum 2017-04-08 05:30:18 (edited on 2024-09-04 13:44:52) in Stockage et Sauvegardes

Bonjour à tous,

L'outil d'administration de mon domaine colonelreyel me permettait d'effectuer des sauvegardes de ma base de données simplement. Depuis un temps indéterminé, une fonction php obsolète m'empêche de réaliser cette action.

J'ai bien entendu réalisé celle-ci avec succès depuis https://phpmyadmin.ovh.net, mais j'aimerais automatiser cette action par exemple selon un cycle hebdomadaire sur un support externe.

J'ai beau chercher, dans l'ancien forum ou celui-ci je ne trouve pas de mode opératoire et pourtant c'est un gage de qualité vis-à-vis de mes lecteurs.
Quelqu'un pourrait-il m'aider pour le script, sachant que je ne suis plus développeur ?

Au plaisir de lire vos propositions et je vous remercie d'avance pour votre aide


7 Antworten ( Latest reply on 2017-04-10 11:27:05 Von
MarcelB
)

Bonjour,

Le site est basé sur quoi ? Quel CMS ?
Quel est le message d'erreur lors de la tentative de backup de ma base de données ?

Bonjour Buddy,

Le CMS est Arfooo et j'ai un soucis avec la fonction mysql_real_escape_string dont j'ai précisé ce matin un maximum d'informations https://forum.alsacreations.com/topic-20-80918-1-CMS-Arfooo-mysqlrealescapestring-deprecated.html ici.

Mais au delà de corriger le code pour l'état de l'art, ce que je souhaiterais avant tout c'est d'automatiser la sauvegarde.

Une piste --> https://www.wordetweb.com/word-et-web/OVH-Sauvegarder-Restaurer-une-base-de-donnees-via-un-script-FR.htm OVH - Sauvegardes et Restaurations de Bases de Données via un script

Arfooo est basé sur PHP5 et il ne semble pas y avoir eu de mise à jour. La fonction mysql_real_escape_string est obsolète et a été supprimée à partir de PHP7.
Donc soit tu passes en PHP5.6 au niveau de .ovhconfig, soit tu choisis une autre option comme le suggère @Gaston_Phone
Sinon si tu peux modifier le code source c'est mysqli_real_escape_string qu'il faut utiliser

Merci d'avoir pris le temps de lire mon message et pour vos suggestions.
@Gaston_Phone :

@Daniel60 : modifier 2 ou 3 lignes pour utiliser la fonction mysqli_real_escape_string doit être relativement simple, mais je ne comprends pas l'exhaustivité de la syntaxe.
Est-ce qu'un membre pourrait m'aider à décrypter ou intégrer la fonction

$res = $this->db->sqlQuery("SELECT * FROM $table");
$linesCount = $this->db->sqlNumRows($res);

if ($linesCount) {
$backupSqlCode .= "INSERT INTO $table VALUES";
while ($dataRow = $this->db->sqlFetchArray($res)) {
$linesCount--;
$dataRow = array_map("mysql_real_escape_string", $dataRow);
$dataLine = "('" . implode("', '", $dataRow) . "')";
if ($linesCount) {
$dataLine .= ",";
}
$backupSqlCode .= $dataLine;
}
$backupSqlCode .= ";";
}
Merci d'avance

Bonjour,

tu as la syntaxe ici : http://php.net/manual/fr/mysqli.real-escape-string.php (tout en bas il y a des exemple)

ceci devrait marcher

$dataRow = $mysqli->real_escape_string($dataRow );

J'ai essayé la syntaxe suggérée et le message d'erreur suivant s'affiche

(8) Undefined variable: mysqli DatabaseModel.php line 71 9-4-17 8:43
FrontController->dispatch() # line 18, file: /home/parfumden/colonelreyel/index.php
call_user_func_array(Array[2], Array[0]) # line 220, file: /home/parfumden/colonelreyel/core/FrontController.php
Admin_SystemController->saveAction() # line 0, file: unknown
DatabaseModel->createBackup("gz", "store|download") # line 71, file: /home/parfumden/colonelreyel/admin/controllers/SystemController.php

Le problème c'est que l'ensemble du code pour utiliser mysql et pas mysqli ..

Il faudrait revoir tout le code source ...

Et le message d'erreur seul, sans savoir le contenu des fichiers auquel il réfère s'est compliqué et impossible à débugger.

Bref, à mon avis, soit l'éditeur de ton CMS le met encore à jour et d'ici quelques mois çà sera bon.
Soit le CMS est abandonné et tu ferais mieux de changer..

@MarcelB L'emploi des fonctions mysqli_ ou mysqli:: présuppose que la base de donnée à été ouverte de cette façon :
$mysqli = new mysqli("host", "my_user", "my_password", "bd");
Tu dois donc aussi modifier ce passage ailleurs dans le script.

Merci @Daniel60 pour le complément d'information, cela suppose donc plus de modification que je ne le pensais.

En effet. Aussi en attendant une mise à jour éventuelle d'Arfooo, tu pourrais temporairement downgrader ton PHP comme indiqué plus haut par le biais d'.ovhconfig https://docs.ovh.com/fr/fr/web/hosting/configurer-le-php-sur-son-hebergement-web-mutu-2014/

Effectivement je pourrais dowgrader la version PHP, mais c'est reculé pour mieux sauter, la communauté Arfooo n'est plus très active et le socle avance encore grâce à des échanges entre quelques passionnés. Il faut donc avancer