Installer sa bdd via php

Répondre
bibi
le 04/12/2004 à 12:57
bibi
bon bah en fait voila j'ai tenté un fichier install.php donc je crée la base, ca c ok mais apres, je fais une boucle sur un fichier .sql pour récupérer toutes les requetes de création de table mais ca ne marche pas

install.php
<?


$bdd = mysql_connect("localhost","root","");

$req = mysql_query('CREATE DATABASE testons') or die ("Erreur");

if($req)
{
echo "Création de la base ..... OK\r\n";
/*mysql_select_db("teston",$bdd) or die("erreur de connexion à la base");*/
$fd = fopen("projet.sql","r");
$buffer = "";
while (!feof ($fd)) {
$buffer .= fgets($fd, 4096);
}

mysql_query($buffer) or die ("Erreur lors de l'exécution des requetes d'insertion\r\n");
} ?>


et ca m'affiche toujours ca :

Erreur lors de l'exécution des requetes d'insertion

voila si qqun avait deja fait un fichier installer comme ca s'il pouvai m'aider merci bien
commit suicide
bibi
le 04/12/2004 à 12:57
bibi
euh me suis planté, jvoulais dire via php dans le titre :s désolé
commit suicide
LA GLOBULE
le 04/12/2004 à 13:06
LA GLOBULE
Le probleme de ta solution, c'est les 30 secondes de php pour charger une page.

Si ta base est trop grosse, tu risques d'arriver vite en timeout :/
Perso, la base de données de ce site est devenu trop grosse pour que je puisse l'importer via PHPMyAdmin.
Je me connecte alors sur le serveur mysql avec un client et je "source" mon backup.

C'est beaucoup plus rapide.
LA GLOBULE
le 04/12/2004 à 13:07
LA GLOBULE
Sinon, modifie ton or die en mettant dedans un mysql_error pour voir l'erreur.
bibi
le 04/12/2004 à 14:46
bibi
Erreur(1064): Erreur de syntaxe près de '; CREATE TABLE `level` ( `NumLevel` tinyint(3) unsigned NOT ' à la ligne 1


tu crois que faut que j'enleve tous les backquotes ???
commit suicide
bibi
le 04/12/2004 à 15:23
bibi
voili voilou le contenu de $buffer :)

DROP TABLE IF EXISTS `level`; CREATE TABLE `level` ( `NumLevel` tinyint(3) unsigned NOT NULL , `NomLevel` varchar(20) NOT NULL default '', PRIMARY KEY (`NumLevel`) ) TYPE=MyISAM AUTO_INCREMENT=1 ; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `NumUser` tinyint(3) unsigned NOT NULL auto_increment, `NomUser` varchar(20) NOT NULL default '', `PassUser` varchar(150) NOT NULL default '', `MailUser` varchar(50) NOT NULL, `LevelUser` tinyint(3) NOT NULL default '1', `DateinsUser` varchar(20) NOT NULL default '', PRIMARY KEY (`NumUser`) ) TYPE=MyISAM AUTO_INCREMENT=1 ; DROP TABLE IF EXISTS `commfic`; CREATE TABLE `commfic` ( `NumComFic` int(10) unsigned NOT NULL default '0', `DateComFic` varchar(20) NOT NULL default '', `NomPosteur` varchar(11) NOT NULL default '0', `Texte` text NOT NULL default '', `NumFichier` int(10) unsigned NOT NULL, `NoteComFic` tinyint(2), PRIMARY KEY (`NumComFic`) ) TYPE=MyISAM AUTO_INCREMENT=1; DROP TABLE IF EXISTS `fichier`; CREATE TABLE `fichier` ( `NumFichier` tinyint(3) unsigned NOT NULL auto_increment, `NomFichier` varchar(20) NOT NULL default '', `DescrFichier` varchar(200), `GroupeFichier` tinyint(3) NOT NULL default '', `NumUserFichier` tinyint(3) NOT NULL default '', `NumtypeFichier` tinyint(3) NOT NULL, `DateFichier` varchar(20) NOT NULL default '', `NumetatFichier` tinyint(3) NOT NULL, PRIMARY KEY (`NumFichier`) ) TYPE=MyISAM AUTO_INCREMENT=1; DROP TABLE IF EXISTS `typefichier`; CREATE TABLE `typefichier` ( `Numtype` tinyint(3) unsigned NOT NULL auto_increment, `Nomtype` varchar(20) NOT NULL default '', PRIMARY KEY (`Numtype`) ) TYPE=MyISAM AUTO_INCREMENT=1; DROP TABLE IF EXISTS `typeetat`; CREATE TABLE `typeetat` ( `NumEtat` tinyint(3) unsigned NOT NULL auto_increment, `NomEtat` varchar(20) NOT NULL default '', PRIMARY KEY (`NumEtat`) ) TYPE=MyISAM AUTO_INCREMENT=1; DROP TABLE IF EXISTS `messageprive`; CREATE TABLE `messageprive` ( `NumMessagePrive` tinyint(3) unsigned NOT NULL auto_increment, `SujetMessagePrive` varchar(40) NOT NULL default '', `ExpMessagePrive` varchar(20) NOT NULL default '', `DestMessagePrive` varchar(20) NOT NULL default '', `CorpsMessagePrive` text NOT NULL default '', `DateMessagePrive` varchar(20) NOT NULL default '', PRIMARY KEY (`NumMessagePrive`) ) TYPE=MyISAM AUTO_INCREMENT=1; DROP TABLE IF EXISTS `groupe`; CREATE TABLE `groupe` ( `NumGroupe` tinyint(3) unsigned NOT NULL auto_increment, `NomGroupe` varchar(20) NOT NULL default '', `DescrGroupe` varchar(200), `OwnerGroupe` varchar(20) NOT NULL default '', `DateGroupe` varchar(20) NOT NULL default '', PRIMARY KEY (`NumGroupe`) ) TYPE=MyISAM AUTO_INCREMENT=1; DROP TABLE IF EXISTS `groupuser`; CREATE TABLE `groupuser` ( `NumUser` tinyint(3) unsigned NOT NULL, `NumGroupe` tinyint(3) unsigned NOT NULL, PRIMARY KEY(`NumUser`,`NumGroupe`) ) TYPE=MyISAM; DROP TABLE IF EXISTS `typeext`; CREATE TABLE `typeext`( `NumExt` tinyint(3) unsigned NOT NULL auto_increment, `NumTypeExt` tinyint(3) NOT NULL, `NomExt` varchar(5) NOT NULL, PRIMARY KEY(`NumExt`) ) TYPE=MyISAM AUTO_INCREMENT=1; # -------------------------------------------------------- # # Structure de la table `message` # # Création: Lundi 02 Février 2004 à 18:28 # Dernière modification: Lundi 02 Février 2004 à 18:37 # DROP TABLE IF EXISTS `message`; CREATE TABLE `message` ( `NumMsg` int(10) unsigned NOT NULL auto_increment, `Date` varchar(20) NOT NULL default '', `NumUser` int(11) NOT NULL default '0', `Texte` text NOT NULL default '', `Image` varchar(250), `Titre` varchar(40), PRIMARY KEY (`NumMsg`) ) TYPE=MyISAM AUTO_INCREMENT=1; # -------------------------------------------------------- # # Structure de la table `commentaire` # # Création: Lundi 02 Février 2004 à 18:28 # Dernière modification: Lundi 02 Février 2004 à 18:37 # DROP TABLE IF EXISTS `commentaire`; CREATE TABLE `commentaire` ( `NumCom` int(10) unsigned NOT NULL default '0', `Date` varchar(20) NOT NULL default '', `NomPosteur` varchar(11) NOT NULL default '0', `Texte` text NOT NULL default '', `NumMsg` int(10) unsigned NOT NULL, PRIMARY KEY (`NumCom`) ) TYPE=MyISAM; # -------------------------------------------------------- INSERT INTO `typeetat` VALUES (1, 'En attente'); INSERT INTO `typeetat` VALUES (2, 'Validé'); INSERT INTO `typeetat` VALUES (3, 'Refusé'); INSERT INTO `level` VALUES (1, 'Utilisateur'); INSERT INTO `level` VALUES (6, 'Posteur'); INSERT INTO `level` VALUES (15, 'Administrateur'); INSERT INTO `level` VALUES (90, 'Dieu'); INSERT INTO `typefichier` VALUES (1, 'Image'); INSERT INTO `typefichier` VALUES (2, 'Texte'); INSERT INTO `typefichier` VALUES (3, 'Vidéo'); INSERT INTO `typefichier` VALUES (4, 'Application'); INSERT INTO `typefichier` VALUES (5, 'Archive'); INSERT INTO `typefichier` VALUES (6, 'Autre'); INSERT INTO `typeext` VALUES (1, 1, 'jpg'); INSERT INTO `typeext` VALUES (2, 1, 'jpeg'); INSERT INTO `typeext` VALUES (3, 1, 'png'); INSERT INTO `typeext` VALUES (4, 1, 'gif'); INSERT INTO `typeext` VALUES (5, 1, 'bmp'); INSERT INTO `typeext` VALUES (6, 1, 'tiff'); INSERT INTO `typeext` VALUES (7, 2, 'txt'); INSERT INTO `typeext` VALUES (8, 2, 'sql'); INSERT INTO `typeext` VALUES (9, 2, 'php'); INSERT INTO `typeext` VALUES (10, 2, 'html'); INSERT INTO `typeext` VALUES (11, 3, 'mpg'); INSERT INTO `typeext` VALUES (12, 3, 'mpeg'); INSERT INTO `typeext` VALUES (13, 3, 'avi'); INSERT INTO `typeext` VALUES (14, 3, 'asf'); INSERT INTO `typeext` VALUES (15, 3, 'wmv'); INSERT INTO `typeext` VALUES (16, 3, 'mov'); INSERT INTO `typeext` VALUES (17, 4, 'exe'); INSERT INTO `typeext` VALUES (18, 5, 'zip'); INSERT INTO `typeext` VALUES (19, 5, 'rar'); INSERT INTO `typeext` VALUES (20, 2, 'php3'); INSERT INTO `typeext` VALUES (21, 2, 'php4'); INSERT INTO `typeext` VALUES (22, 2, 'asp'); INSERT INTO `typeext` VALUES (23, 2, 'cgi'); INSERT INTO `typeext` VALUES (24, 5, 'ace'); INSERT INTO `typeext` VALUES (25, 2, 'php3'); INSERT INTO `typeext` VALUES (26, 2, 'php4'); INSERT INTO `typeext` VALUES (27, 2, 'php5'); INSERT INTO `typeext` VALUES (28, 2, 'cgi'); INSERT INTO `typeext` VALUES (29, 2, 'asp');
commit suicide
bibi
le 04/12/2004 à 15:24
bibi
j'avais d'abord pensé aux commentaires qui pourraient faire foirer mais le problème est bien avant c pour ca ke g pensé aux backquotes :)
commit suicide
LA GLOBULE
le 04/12/2004 à 15:32
LA GLOBULE
Bref, si je comprend bien, tu as plusieures requetes SQL dans $buffer ?

Si oui, alors ca va pas aller. mysql_query ne peux prendre qu'une seule requete SQL en argument.

PS : j'aurais du le voir plus tot. J'avais lu "vite" ton code, et j'avais pas vu le . avant le = et je croyais que le mysql_qeury etait dans le while.
bibi
le 04/12/2004 à 16:00
bibi
okok :) et jdois faire comment pour faire install.php ?? exécuter requete par requete en faisant par exemple requete=explode(";",$buffer); et ensuite faire un truc du style

for(int i=0;i<count($requete);i++)
{
mysql_query($requete[$i]) or die("Erreur");
}
tu penses ca marcherai ??
commit suicide
Répondre
LoadingChargement en cours