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

Symfony PHP Discussion :

Migration / Update de la base de données


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut Migration / Update de la base de données
    Bonjour,

    Il me reste quelque jours avant la fin de mon projet et j'aimerais vous poser une question.

    Comment fait-on un upgrade de la base de données ? je m'explique, j'ai une table, je souhaite rajouter un champs sans modifier les données dedans mais toujours en profitant des avantages de Symfony.

    J'ai pensé à ajouter le champs dans le schema. Generer le modèle, form, filtre et ajouter le champs dans MySQL. Mais je pense que Symfony intègre un système non ?

    Merci d'avance,

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Je suppose que tu développes sur la base de production ?

    La méthode "normal" pour symfony est d'avoir deux environnements distinct, un de développement, où l'on peut faire ce que l'on veut et l'autre de production.

    L'environnement de développement est lui même divisé en trois sous ensemble, un pour le développeur et le débug (frontend_dev), un pour le développeur en situation client (le chemin "nu") et le dernier pour les test, en principe chacun des trois environnement devrait avoir sa propre base de donnée, il arrive que les deux base test de développement et test partagent la même.

    L'environnement de production lui, doit être protégé de tous ces aléa et jamais touché (quoique, une fois tous les développement terminés)...

    Il existe un outils qui génère des fixatures pour les changements de la base de données (ajout et/ou suppression de champs, tables, liens,...). Il part du schema.yml nouveau et d'une base ancienne et génère (plus ou moins bien) des procédures permettant d'y arriver.

    Il ne reste plus qu'à appliquer sur la base de test "nu" puis en production.

    Est-ce ce type d'outil que tu recherches ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    Oui c'est ce principe. Mais j'ai pas autant de serveur. J'en ai un en prod. Et un en dev.

    Du coup, si une modification du schema est faite, il faut modifier celui en prod sans perdre les données.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Tu as un notion de "migration" qui permettent de générer du code passant de la base actuel en base définie dans le shema.yml.

    Le principe est d'avoir, dans sur ton poste de dev, un environnement avec l'ancienne structure de la base et ton nouveau shema.yml NON ENCORE CONSTRUIT.

    La commande "symfony doctrine:generate-migration... " va générer des commandes de migration. Pas de doc pour la 1.3/1.4 la seul que j'ai trouvé est pour la 1.2, mais, à priori, il n'y a pas de changement entre les version.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 96
    Par défaut
    Ok merci, je vais lire cette commande afin de pas me planter XD et je reviendrais si j'ai d'autre question.

    [édition] Les étapes sont-elles bonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php symfony doctrine:generate-migrations-diff
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php symfony doctrine:build --all
    enfin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php symfony doctrine:migrate

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    En principe, sur la base de prod, tu ne va pas faire un php symfony doctrine:build --all qui commence par effacer la base de donnée existante...

    D'où l'utilisation du php symfony doctrine:migrate

Discussions similaires

  1. [MySQL] Requête UPDATE d'une base de données
    Par asvin dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/10/2008, 22h19
  2. Réponses: 0
    Dernier message: 13/10/2008, 13h53
  3. Réponses: 2
    Dernier message: 11/09/2007, 14h41
  4. Requête UPDATE entre deux Bases de données
    Par dahu17 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/05/2007, 12h16
  5. erreur lors d'un update d'une base de données
    Par tibtibby dans le forum ASP
    Réponses: 1
    Dernier message: 09/06/2006, 14h30

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