2013-04-13 6 views
3

Я установил DoctrineMigrationsBundle моего Symfony2 приложение, однако, когда я пытаюсь развернуть на мой сервер разработки я получаю следующее сообщение об ошибке:Symfony2 + Capifony Доктрина миграция

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) 

Любой идею, что причина этого?

Вот мой 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 

UPDATE

вопрос, потому что я не совершил версий файлов доктрины миграции и оттеснили их к GitHub. Является ли это правильный процесс после внесения изменений в сущности:

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

Вы проверили таблицу migration_versions? –

+0

Да, там ничего не было. Я исправил это сейчас, я не передавал файлы версий с моей локальной машины в GitHub. Я обновил свой первоначальный вопрос, можете ли вы подтвердить, что процесс верен? (BOttom оригинального вопроса) – user1961082

ответ

10

Это не php app/console doctrine:schema:update --force но php app/console doctrine:migration:migrate.

И вы можете использовать cap development deploy:migrations для выполнения миграций после развертывания.

Надеюсь, это полезно. Наилучшее отношение.

+0

Спасибо. Несколько вопросов: 1. Нужно ли добавлять каждую версию в GitHUb? Полагаю, что да. 2. Если вы используете 'cap development deploy: migrations', значит ли это, что мне не нужно, прежде чем« symfony: cache: warmup »,« symfony: doctrine: migrations: migrate »в моем сценарии deploy.rb? Итак, вы развертываете, а затем мигрируете? 3. Если ответ на вопрос «2» - «да», то следует ли разместить страницу обслуживания при развертывании до завершения миграции? Еще раз спасибо. – user1961082

+0

1. Да, потому что ваш код клонирован из github. 2. Да, я так думаю. 3. Это зависит от вашего приложения. Если ваш сценарий миграции очень длинный или сложный, вы можете использовать этот комплект https://github.com/lexik/LexikMaintenanceBundle –

+0

awesome, спасибо! – user1961082

Смежные вопросы