ライブサーバーで実行する必要がある3つの新しい移行があるため、「cap deploy:migrations」で展開しようとしました。結果は次のとおりです。
executing "cd /home/martin/public_html/project/releases/20110905131238; bundle exec rake RAILS_ENV=production db:migrate"
servers: ["50.56.82.190"]
[50.56.82.190] executing command
** [out :: 50.56.82.190] == CreateUsers: migrating ====================================================
** [out :: 50.56.82.190] -- create_table(:users)
** [out :: 50.56.82.190] rake aborted!
** [out :: 50.56.82.190] An error has occurred, all later migrations canceled:
** [out :: 50.56.82.190]
** [out :: 50.56.82.190] Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `name` varchar(255), `email` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB
** [out :: 50.56.82.190]
** [out :: 50.56.82.190] Tasks: TOP => db:migrate
** [out :: 50.56.82.190] (See full trace by running task with --trace)
command finished in 5816ms
failed: "sh -c 'cd /home/martin/public_html/project/releases/20110905131238; bundle exec rake RAILS_ENV=production db:migrate'" on 50.56.82.190
以前のデプロイでは、ライブ サーバー上に作業データベースを作成しました。今すぐデプロイしたい 3 つの新しい移行を作成しました (新しい gem キャリアウェーブと rmagick を使用したイメージのアップロードのため)。明らかに cap deploy:migrations は、保留中の移行だけでなく、最初の移行からすべての移行を実行しようとします。
私の deploy.rb は次のとおりです。
require 'bundler/capistrano'
set :application, "otg.in"
set :domain, "otg.in"
set :user, "martin"
set :sudo_use, false
set :repository, "git@github.com:Martin118/otg.in.git"
set :local_repository, '~/rails_projects/otg.in/.git'
set :port, 48000
set :deploy_to, "/home/martin/public_html/#{application}"
set :scm, :git
set :branch, "master"
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
server "50.56.82.190", :app, :web, :db, :primary => true
after "deploy", "deploy:bundle_gems"
after "deploy:bundle_gems", "deploy:restart"
after "deploy:update_code", "deploy:migrate"
after "deploy", "deploy:cleanup"
# Passenger
namespace :deploy do
task :bundle_gems do
run "cd #{deploy_to}/current && bundle install vendor/gems"
end
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
end
require 'whenever/capistrano'
rails 3.0.8 を実行し、cap deploy:check を実行すると、「必要な依存関係がすべてインストールされているようです」と表示されます。
何か案は?それとももっと情報が必要ですか?
ご協力いただきありがとうございます!
ライブの schema.rb は次のとおりです。
ActiveRecord::Schema.define(:version => 20110130000344) do
create_table "businesses", :force => true do |t|
t.string "business_name"
t.string "postal_code"
t.string "business_email"
t.string "phone"
t.string "fax"
t.string "web"
t.text "description"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
t.text "address"
t.integer "city_id"
t.integer "state_id"
end
create_table "cities", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "state_id"
end
create_table "states", :force => true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
end
create_table "users", :force => true do |t|
t.string "name"
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
t.string "encrypted_password"
t.string "salt"
t.boolean "admin", :default => false
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
end
別の更新: select * from schema_migrations; 私の開発データベースでは、次のようになります。
+----------------+ | バージョン | +----------------+ | 20110112163009 | | | 20110113141953 | | | 20110113192958 | | | 20110114214158 | | | 20110115002206 | | | 20110119100832 | | | 20110120134443 | | | 20110127171331 | | | 20110127171427 | | | 20110127171921 | | | 20110127172903 | | | 20110127183252 | | | 20110129201949 | | | 20110129204159 | | | 20110129205833 | | | 20110130000344 | | | 20110808142844 | | | 20110809133339 | | | 20110809142303 | | | 20110809154349 | | | 20110810092306 | | | 20110810093531 | | | 20110812085010 | +----------------+
しかし、これをMySQLワークベンチでチェックすると(まだ開発中のデータベース):
エラー: project_development
。schema_migrations
: テーブルに主キーが定義されていないため、テーブル データは編集できません
また、select * from schema_migrations で productions データベースを使用すると、移行が 1 つだけになります (更新を試みる前の最後の移行)。
+----------------+ | バージョン | +----------------+ | 0 | | | 20110130000344 | +----------------+
ここで何が起こったのか知っている人はいますか?
ありがとう!