Bonjour,
J'ai créer une application web qui utilise comme SGBD mysql 5. Est t-il facile de migrer vers PostgreSQL ( sachant que j'utilise pour mon application pour tout ce qui est connextion à la base, execution de requête ... une classe )
Bonjour,
J'ai créer une application web qui utilise comme SGBD mysql 5. Est t-il facile de migrer vers PostgreSQL ( sachant que j'utilise pour mon application pour tout ce qui est connextion à la base, execution de requête ... une classe )
Si ta classe utilise dbx et que tu n'utilises pas de fonctions mysql exotiques, ça devrait se passer sans douleur pour le code PHP.
Si tu n'utilises pas dbx, ça dépend, faut voir. Si ta classe est bien foutue, ça devrait rester relativement aisé tout de même.
Si tu dois faire des modifs, anticipe : passe direct à dbx !
Pratique sa de coneiller à quelqu'un d'utiliser une extension qui est deja condamné dans le standard php !
Envoyé par http://fr.php.net/manual/fr/ref.dbx.php
Dans la mesure ou il ne donne pas sa version de PHP mieux vau conseiller PDO.
-------
Tant que j'y pense il y à aussi ADODB qui peut fonctionner pour PHP 4 et qui supporte plétor de bdd dont pgsql.
-> http://phplens.com/lens/adodb/docs-adodb.htm#intro
Ooops ! Ben je me coucherai moins con.Envoyé par ePoX
PHP4 -> DBX,
PHP5 -> PDO (ne marche pas avec PHP4)
Non je n'utilise pas dbx mais une classe GBD que j'ai implémenté avec des attribut (nom de la base , nom d'utilisateur ...) et des méthodes (connecter, executerRequete, fetch...).
Y a t-il une solution ?
Il y a toujours une solution. Tu ne nous dit toujours pas ce qu'il y a dedans, mais la clé semble être dans la modification de ces méthodes.Envoyé par haffouff
voici le code des principales methodes de ma classe
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 public function connectBd() { $connexion = mysql_connect($this->hostName, $this->userName, $this->passWord) or die( mysql_errno().": ".mysql_error()."<br>"); $this->connexion=$connexion; mysql_select_db($this->dataBase) or die (mysql_errno().": ".mysql_error()."<br>"); return $connexion; } public function deconnectBd() { $a = mysql_close($this->connexion); $this->connexion=null; return $a; } public function execQuery($requete) { $this->result = mysql_query ($requete) or die (mysql_error()); //echo "<br>requete executer"; } public function fetch() { while($row[] = mysql_fetch_array($this->result)){} return $row; }
Il ne te reste plus qu'à trouver les équivalents PostGre des fonctions mysql_xxx que tu utilises, et à remplacer ! (C'est la version "simple").
http://fr2.php.net/manual/fr/ref.pgsql.php
Principe : tu ne dois plus avoir d'occurence de la chaîne "mysql" dans aucun fichier source PHP.
si je comprends bien les prototypes des fonctions de mysql et de postgre sont les mêmes ?? meme nom (sauf prefix), meme attribut ?
Je me suis pas plongé dedans, mais a priori, si t'as du bol, ouais... Vérifie quand même la doc quand tu utilises une fonction.Envoyé par haffouff
Et fais des sauvegardes...
Encore une dernière question :
Si je fait un export avec phpmyadmin pour exporter ma base mysql est ce que le code générer me permet de créer la même base dans postegre?
Je ne l'ai jamais fait, mais normalement oui.
A ceci près qu'il faudra faire attention aux particularités de mysql.
Par exemple les ` pour entourer nom de tables/colonnes.
Ceci n'existe peut être pas dans pgsql, ou bien pgsql utilise un autre caractère.
Par exemple cette requete pour mysql SELECT `toto` FROM `bibi`, ne fonctionne pas sous SQL server.
Pour la rendre fonctionnel il faut utiliser les [] donc, SELECT [toto] FROM [bibi]
A part cela, pour l'export/import de ta bdd ce ne devrait pas poser de souci. Il faudrait regarder aussi le code exporter pour les SP et les triggers... A vérifier.
Mais dans l'ensemble je serait, à priori, plutot confiant à ta place.
bbye
Ok merci beaucoup pour votre aide.
Mais je crois que je vais passer toute une journée à vérifié mes requêtes s'ils contiennet des côtes `
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager