Bonjour,
Je lis votre post avec grand intérêt. Du haut de mon "amateurisme" en matière de SGBD j'avais fait mes premiers pas avec InnoDB et je l'ai vite abandonné, découragé par la certaine complexité apparente du système. C'est un choix que je reconsidère aujourd'hui, et d'ailleurs, merci pour le tuto en lien plus haut!
J'ai donc fait une refonte de mes bases en y ajoutant les clés étrangères afin de limiter d'une part le nombre de requêtes envoyées, et d'autre part, la complexité du code...
Cepandant, j'ai désormais un problème. J'avais créé un petit système permettant pour les administrateurs de mon site, de faire une rapide sauvegarde de la base assez facilement. Je mets le code plus bas. Avec InnoDb maintenant, phpMyAdmin refuse de restaurer mes bases... Sait-on pourquoi?
Aussi, que pensez vous de cette méthode pour faire des backups... j'imagine que ce n'est pas optimal, mais je ne suis pas du tout familiarisé avec les moyens "propres" pour faire ces backups... et particulièrement, pour les restaurer. Y a-t-il quelques conseils dont je puisse tirer parti? Un lien vers un tuto "débutant" en ce qui concerne cela?
merci d'avance pour vos réponses!
Voici le code que j'utilise pour mes backups de bases:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 public static function backup_tables($tables="*"){ $host = Config::$DBH_HOST; $user = Config::$DBH_USER; $pass = Config::$DBH_PASS; $name = Config::$DBH_BASE; $return = ""; $link = mysql_connect($host,$user,$pass); mysql_select_db($name,$link); if($tables == '*'){ $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)){ $tables[] = $row[0]; } }else{ $tables = is_array($tables) ? $tables : explode(',',$tables); } foreach($tables as $table){ $result = mysql_query('SELECT * FROM '.$table); $num_fields = mysql_num_fields($result); $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table)); $return.= "\n\n".$row2[1].";\n\n"; for ($i = 0; $i < $num_fields; $i++){ while($row = mysql_fetch_row($result)){ $return.= 'INSERT INTO '.$table.' VALUES('; for($j=0; $j<$num_fields; $j++){ $row[$j] = addslashes($row[$j]); $row[$j] = preg_replace("#\n#","\\n",$row[$j]); if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; } if ($j<($num_fields-1)) { $return.= ','; } } $return.= ");\n"; } } $return.="\n\n\n"; } $handle = fopen('backup/db/dbbackup-'.$name.'-'.date('d-m-Y-Hi').'-'.(md5(implode(',',$tables))).'.sql','w+'); fwrite($handle,$return); fclose($handle); }
Partager