IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

Mettre à jour le schéma sur un site en prod, sans perdre les données de prod


Sujet :

ORM PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Mettre à jour le schéma sur un site en prod, sans perdre les données de prod
    Bonjour !

    Je suis actuellement en train de développer un site sous Symfony en local.
    Je sais que la mise en prod se fera sur un hébergement OVH qui ne possède pas de ligne de commande.

    Pour le moment, je suis donc obligé d'envoyer tout mon projet avec le FTP (en arrangeant les trucs qui vont bien : suppression du cache, modification des paramètres de la DB, ...).
    Pour la DB, je fais un dump de ma base locale et je l'importe dans ma base OVH (préalablement vidée).

    Seulement, cette démarche trouvera ses limites lorsque le site entrera en prod.
    En effet, lorsque je ferais une mise à jour modifiant le schéma, je devrais alors choisir entre conserver les données de prod ou mettre à jour la structure de la DB.
    Dans le 2ème cas, ma mise à jour sera donc entièrement répercutée sur l'environnement de prod, mais j'aurais mes fixtures au lieu des données présentes avant la mise à jour.

    Connaissez-vous l'existence d'une procédure qui permettrait de mettre à jour mon application tout en conservant mes données de prod, et sachant que je n'ai pas accès à la ligne de commande sur le serveur de prod ?

    Merci d'avance !

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut


    Une solution un brin bourinne mais fonctionnelle : dans PhpMyAdmin ou équivalent, tu ajoutes les champs qu'il faut dans ta base. Ça ne mettra pas de données dedans, mais ça fera au moins que tout fonctionne. Il doit y avoir mieux, c'est cependant tout ce que j'ai trouvé...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    C'est bourrin, mais merci, je n'y avait pas pensé

    Du coup, as-tu connaissance d'un outil qui pourrait générer, à partir des 2 structures sql (l'ancienne et la nouvelle), les instructions nécessaires au passage de l'ancienne à la nouvelle ?
    Si un tel outil existait, ça serait royal
    Malheureusement, je n'en ai jamais entendu parler...

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Ça s'appelle la mémoire (il suffit de faire un diff sur ton schéma et tu vois les nouveaux champs apparaître tout seuls). Sinon, il y a des commandes de mise à jour de la base, il doit y avoir moyen de récupérer ce qu'ils font (ça doit bien être enregistré dans un fichier temporaire ou qqhc du genre).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    il suffit de faire un diff sur ton schéma et tu vois les nouveaux champs apparaître tout seuls
    Je ne te suis pas là
    Peux-tu développer un petit peu s'il te plait ?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Tu surveilles les modifications de ton schéma, soit à l'aide d'outils comme Subversion, soit avec l'outil diff (soit à la mémoire). C'est-à-dire que tu peux voir très exactement quels ont été les changements dans le schéma et ainsi les répercuter dans la base (à coup de ALTER TABLE).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre actif

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Points : 220
    Points
    220
    Par défaut
    La meilleure solution si utilises doctrine est les migrations :
    http://www.doctrine-project.org/proj.../migrations/en

    Vu que tu n'as pas d'accès ssh, tu peux rapatrier la base de production en local, appliquer les migrations puis la livrer en production.

    Dans le cas contraire, il faut passer par un système de script de mise à jour (équivalent à ceux des migrations) mais en SQL.
    Tu écris des ALTER, INSERT etc... dans un fichier sql daté pour chaque mise à jour. L'idéal pour ne pas faire d'erreur est d'avoir une table version, et à chaque mis à jour tu incrémentes le numéro de version, et AVANT chaque mise à jour tu vérifies via une requête que le numéro de version est N-1.

    Dans le cas où tu dois repasser les scripts comme ça tu ne peux que les passer dans l'ordre.

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Je préfère la solution de Vivian. Un peu moins bourin (et le système de symfony ne fait pas autre chose).

    De toutes les manières, si tu n'as pas d'accès ssh c'est que tu es sur un petit hébergement, donc le site doit avoir un trafic faîble, le fermer pour modification de la base durant 10mn ne doit être très pénalisant.

    N'hésite pas a faire plusieurs test avant. Fait et garde une sauvegarde des données ET du site avant d'appliquer les modifications.

    De toutes les manières, il ne faut pas se faire d'illusion, si les données peuvent être modifiées en quelques dizaines de seconde par une proc sql, il faudra plusieurs minutes (ou plus) pour charger les fichiers php modifié sur le site en ftp... (vu que tu n'as pas de ligne de commande, impossible de les charger dans une autre arborescence et les copier en local ensuite) et pas question de laisser le site accessible alors que les deux versions vont se partager les dossiers.

    Il faut rester réaliste, on ne peut pas demander à un tel hébergement des résultats équivalent à ceux dédiés à de gros sites pro en exploitation, donc, soit on accepte les contraintes mais on est comptent du prix, soit on ne veux pas les contraintes, mais on paye un hébergement pro de qualité (attention, je ne critique pas les hébergements OVH, chez qui j'ai plusieurs sites hébergé).
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses !

    Pour le moment, je vais prendre le temps de faire des essais avec sqlt-diff.
    C'est un programme écrit en perl qui semble faire ce dont j'ai besoin.
    --> http://search.cpan.org/~jrobinson/SQ...ript/sqlt-diff

    On verra bien ce que ça donnera...

  10. #10
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Bonne chance.

    Mais je reste convaincu qu'un suivi des modifications et la rédaction régulière des procédures permettant un up et un down de version sont la meilleur manière de procéder.

    De plus, un tel outil va te générer les créations et modification de structure, mais que fera-t-il des données ?

    Dans ce cas, l'automatisation aveugle me semble bien hasardeux. Fait des sauvegardes, beaucoup de sauvegardes...
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

Discussions similaires

  1. [Hibernate2] Update sur Hibernate 2.1.2 sans charger les données
    Par karbos dans le forum Hibernate
    Réponses: 11
    Dernier message: 02/11/2011, 14h58
  2. Mise à jour BDD sans perdre les données
    Par penchu dans le forum Accès aux données
    Réponses: 4
    Dernier message: 07/02/2007, 11h21
  3. [HTML] Comment faire pour mettre de la musique sur un site
    Par Gray Man dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/12/2005, 18h13
  4. Mettre à jour la franchise sur une requête
    Par soso78 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/10/2005, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo