LiTtLeBuBu
Messages postés50Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention10 février 2009
-
18 janv. 2008 à 10:35
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
21 janv. 2008 à 17:32
Bonjour,
Voila j'ai récupérer un script sur le site pour sauvegarder ma BDD. J'ai modifié le script pour enlever les fonctions envoi par mail et FTP. J'ai aussi modifier $sql_header pour y rajouter des infos style phpmyadmin.
Les sauvgardes fonctionnent mais pas leur restauration.
#1064 - Erreur de syntaxe pr?s de 'CREATE TABLE `referer` (
`id` smallint(4) NOT NULL auto_inc' ? la ligne 21
Voici le script:
// DUMP SQL
function saveDB($mysql_array = array()){
if (!empty($mail_array)){
$mail = $mail_array[0];
$attachement = $mail_array[1];
}
if(!$link = mysql_connect($mysql_host,$mysql_user,$mysql_password))
$err_msg .= 'Impossible de se connecter à '.$mysql_host."\n";
else{
$testfile = 'backup_sql/'.uniqid(mt_rand()).'.tmp';
if (!$handle = fopen($testfile,'w'))
$err_msg .= 'Impossible d\'ouvrir un fichier en écriture dans le répertoire "backup_sql/"'."\n";
else
fclose($handle);
if (file_exists($testfile)) unlink($testfile);
if ($err_msg == ''){
$db_list = mysql_list_dbs($link);
$names = array();
while ($row = mysql_fetch_object($db_list)) {
if ($row->Database != 'information_schema'){
$q = 'SHOW CREATE DATABASE `'.($row->Database).'`';
$r = mysql_query($q);
while ($s=mysql_fetch_object($r)){
$filename = 'BackupSQL_'.($row->Database).'_'.date('d-m-Y').'.sql';
$names[] = $filename;
if (!$handle = fopen('backup_sql/'.$filename, 'w'))
$err_msg .= 'Impossible d\'ouvrir en écriture le fichier sql de '.($row->Database)."\n";
else{
$sql_header .= '# SQL Dump par script PHP'."\n";
$sql_header .= '# http://www.******.com'."\n";
$sql_header .= '#'."\n";
$sql_header .= '# Serveur: sql.*****.fr'."\n";
$sql_header .= '# Généré le '.date('d-m-Y à H:i:s').''."\n";
$sql_header .= '# Version du serveur PHP: '.phpversion().''."\n";
$sql_header .= '# Version de Mysql: '.mysql_get_server_info().''."\n";
$sql_header .= '#'."\n";
$sql_header .= '# Base de données: `'.($row->Database).'`'."\n";
$sql_header .= '#'."\n";
$sql_header .= '#'."\n\n";
$sql_header .= $s->{'Create Database'}.";\n\n";
if (fwrite($handle, $sql_header) === FALSE)
$err_msg .= 'Impossible d\'écrire dans le fichier sql de '.($row->Database)."\n";
else{
mysql_select_db($row->Database, $link);
if($count == $maxinsert){
if (fwrite($handle, $sql_export) === FALSE){
$err_msg .= 'Erreur d\'exportation avec la '.$table.' de la base '.($row->Database)."\n";
}
else
$sql_export = '';
}
}
$sql_export .= "\n";
if (fwrite($handle, $sql_export) === FALSE)
$err_msg .= 'Erreur d\'exportation avec la '.$table.' de la base '.($row->Database)."\n";
}
}
}
fclose($handle);
}
}
}
}
}
}
}
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 15:25
A vue d'oeil, je dirai que ton script ne met pas de ; à la fin des create, alors qu'il le faut (c'est ce qui permet à sql de savoir où la nouvelle requete commence !)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 17:32
ca c'est un probleme d'encodage : il faut que tu récupere le type d'encodage de ta bdd, et que tu fasse un fichier qui ait le meme type d'encodage, ou que tu encode les données de la bdd dans le même format.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 12:10
est-ce que tu insère plusieures tables ?
Si tu fait une requete de création de plusieurs tables sur la meme requete, en php avec mysql_query, ca passe pas, c'est ptete ca ?
Il faut découper chaques requetes en plusieures requetes et non plusieurs séparées par des ;
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 21 janv. 2008 à 13:52
mais ce que je veux dire, c'est s'il tu fait plusieurs requetes d'un coup, genre
mysql_query ("create....; create....;create....");
ou si tu fait
mysql_query ("create.....;");
mysql_query ("create ....;");
mysql_query ("create ....;");
Car la premiere méthode ne marche pas avec la fonction mysql_query !
LiTtLeBuBu
Messages postés50Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention10 février 2009 21 janv. 2008 à 15:21
# SQL Dump par script PHP
# http://www.******.com #
# Serveur: sql.******.fr
# Généré le 06-01-2008 à 20:03:03
# Version du serveur PHP: 4.3.11
# Version de Mysql: 4.1.16-Max
#
# Base de données: `*******`
#
#
CREATE DATABASE `*********` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE TABLE `ref_client` (
`id` smallint(4) NOT NULL auto_increment,
`nom` varchar(100) NOT NULL default '',
`ville` varchar(100) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
`photo1` varchar(255) NOT NULL default '',
`text1` varchar(60) NOT NULL default '',
`photo2` varchar(255) NOT NULL default '',
`text2` varchar(60) NOT NULL default '',
`photo3` varchar(255) NOT NULL default '',
`text3` varchar(60) NOT NULL default '',
`photo4` varchar(255) NOT NULL default '',
`text4` varchar(60) NOT NULL default '',
`photo5` varchar(255) NOT NULL default '',
`text5` varchar(60) NOT NULL default '',
`photo6` varchar(255) NOT NULL default '',
`text6` varchar(60) NOT NULL default '',
`description` text NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
#
# Contenu de la table `ref_client`
#
INSERT INTO `ref_client` VALUES(4, '******', '****', 2006-11-12, '*****_1_456789AZ_06032007071.jpg', 'Accenderat super his incitatum propositum ad nocendum', '******_2_3456789A_06032007072.jpg', 'Et eodem impetu Domitianum praecipitem per scalas', '******_3_fghijklm_P1010016.JPG', 'Isdem diebus Apollinaris Domitiani gener paulo ante', '******_4_DSQWXCVB_P1010006.JPG', 'Quod cum ita sit, paucae domus studiorum seriis', '******_5_defghijk_06032007070.jpg', 'Nunc vero inanes flatus quorundam vile esse quicquid', '*******_6_fghijklm_PA270027.JPG', 'Excogitatum est super his, ut homines quidam ignoti', 'Hacque adfabilitate confisus cum eadem postridie feceris, ut incognitus haerebis et repentinus, hortatore illo hesterno clientes numerando, qui sis vel unde venias diutius ambigente agnitus vero tandem et adscitus in amicitiam si te salutandi adsiduitati dederis triennio indiscretus et per tot dierum defueris tempus, reverteris ad paria perferenda, nec ubi esses interrogatus et quo tandem miser discesseris, aetatem omnem frustra in stipite conteres summittendo.
\r\nHorum adventum praedocti speculationibus fidis rectores militum tessera data sollemni armatos omnes celeri eduxere procursu et agiliter praeterito Calycadni fluminis ponte, cuius undarum magnitudo murorum adluit turres, in speciem locavere pugnandi. neque tamen exiluit quisquam nec permissus est congredi. formidabatur enim flagrans vesania manus et superior numero et ruitura sine respectu salutis in ferrum.
\r\nIdeo urbs venerabilis post superbas efferatarum gentium cervices oppressas latasque leges fundamenta libertatis et retinacula sempiterna velut frugi parens et prudens et dives Caesaribus tamquam liberis suis regenda patrimonii iura permisit.