2013-04-13 4 views
3

J'ai installé le DoctrineMigrationsBundle à mon application Symfony2, mais lorsque je tente de déployer sur mon serveur de développement, je reçois l'erreur suivante:Symfony2 + Capifony migrations Doctrine

Do you really want to migrate dev's database? (y/N) 
y 
    * executing "sh -c ' cd /var/www/vhosts/xyz.co.uk/releases/20130413181722 && php app/console doctrine:migrations:migrate --env=dev --no-interaction'" 
    servers: ["x.xx.xx.xxx"] 
    [x.xx.xx.xxx] executing command 
** [out :: x.xx.xx.xxx]                
** [out :: x.xx.xx.xxx]      Application Migrations      
** [out :: x.xx.xx.xxx]                
** [out :: x.xx.xx.xxx] 
** [out :: x.xx.xx.xxx] Migrating up to 0 from 0 
** [out :: x.xx.xx.xxx] 
** [out :: x.xx.xx.xxx] 
** [out :: x.xx.xx.xxx]             
** [out :: x.xx.xx.xxx] [Doctrine\DBAL\Migrations\MigrationException] 
** [out :: x.xx.xx.xxx] Could not find any migrations to execute.  
** [out :: x.xx.xx.xxx]             
** [out :: x.xx.xx.xxx] 
** [out :: x.xx.xx.xxx] 
** [out :: x.xx.xx.xxx] doctrine:migrations:migrate [--write-sql] [--dry-run] [--configuration[="..."]] [--db-configuration[="..."]] [--em[="..."]] [version] 
** [out :: x.xx.xx.xxx] 
** [out :: x.xx.xx.xxx] 
    command finished in 802ms 
*** [symfony:doctrine:migrations:migrate] rolling back 
Do you really want to migrate dev's database back to version 0? (y/N) 

Toute idée de ce qui cause?

Voici mon fichier deploy.rb:

set :stage_dir, 'app/config/deploy' 
set :stages, %w(production staging development) 
require 'capistrano/ext/multistage' 

set :application,   "xyz.co.uk" 
set :user,     "deployer" # The server's user for deploys 

set :normalize_asset_timestamps, false 

set :repository,   "[email protected]/xyz.co.uk.git" 
set :scm,     :git 
set :keep_releases,   3 
after "deploy:update",  "deploy:cleanup" 
set :use_sudo,    false 
set :web_path,    "web" 
set :shared_files,   ["app/config/parameters.yml"] 
set :shared_children,  [app_path + "/logs", web_path + "/uploads"] 
set :use_composer,   true 
set :update_vendors,  true 
set :dump_assetic_assets, true 
set :deploy_via,   :remote_cache 

#logger.level = Logger::MAX_LEVEL 

before "symfony:cache:warmup", "symfony:doctrine:migrations:migrate" 

after "deploy:update_code" do 
    capifony_pretty_print "--> Ensuring cache directory permissions" 
    run "setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX #{latest_release}/#{cache_path}" 
    run "setfacl -dR -m u:www-data:rwX -m u:`whoami`:rwX #{latest_release}/#{cache_path}" 
    capifony_puts_ok 
end 

MISE À JOUR

La question était parce que je ne l'avais pas commis les fichiers de la version de migration de la doctrine et les a poussés à GitHub. Est-ce le bon processus après avoir fait un changement à une entité:

php app/console doctrine:migrations:diff 
php app/console doctrine:schema:update --force 
git add app/DoctrineMigrations/Version1234.php 
git commit -a -m "migration" 
git push origin develop 
cap development deploy 
+0

Avez-vous vérifié la table migration_versions? –

+0

Oui, il n'y avait rien là-dedans. Je l'ai réparé maintenant, je n'avais pas commis les fichiers de version de ma machine locale à GitHub. J'ai mis à jour ma question originale, pouvez-vous s'il vous plaît confirmer que le processus est correct? (BOttom de la question originale) – user1961082

Répondre

10

Ce n'est pas php app/console doctrine:schema:update --force mais php app/console doctrine:migration:migrate. Vous pouvez utiliser cap development deploy:migrations pour exécuter les migrations après le déploiement.

J'espère que c'est utile. Cordialement.

+0

Merci. Quelques questions: 1. Devez-vous ajouter chaque version à GitHUb? Je suppose que vous faites. 2. Si vous utilisez 'cap développement deploy: migrations' cela signifie-t-il que je n'aurais pas besoin de" symfony: cache: warmup "," symfony: doctrine: migrations: migrate "dans mon script deploy.rb? Alors vous déployez puis migrez? 3. Si la réponse à 2 est oui, devriez-vous mettre une page de maintenance à jour lorsque vous déployez jusqu'à ce que les migrations soient terminées? Merci encore. – user1961082

+0

1. Oui, car votre code est clone de github. 2. Oui je le pense. 3. Cela dépend de votre application. Si votre script migrations est très long ou complexe, vous pouvez utiliser ce bundle https://github.com/lexik/LexikMaintenanceBundle –

+0

génial, merci! – user1961082

Questions connexes