我無法運行rake db:在db/migrate目錄內使用兩個單獨的遷移文件進行遷移。我用activerecord(不是rails)使用sinatra。無法運行rake db:使用ruby,sinatra和activerecord進行遷移
Migration1具有時間戳:
class CreateAdmins < ActiveRecord::Migration
#def change
#end
def up
create_table :admins do |t|
t.string :email
t.string :name
end
end
def down
drop table :admins
end
end
Migration2
class CreateBills < ActiveRecord::Migration
#def change
#end
def up
create_table: bills do |t|
t.string :email
t.string :title
t.text :body
end
end
def down
drop_table :bills
end
end
的Gemfile:
# Gemfile
source 'https://rubygems.org'
gem "sinatra"
gem "activerecord"
gem "sinatra-activerecord"
gem 'sinatra-flash'
gem 'sinatra-redirect-with-flash'
gem 'rake'
group :development do
gem 'sqlite3'
gem "tux"
end
group :production do
gem 'sqlite3'
end
Rake文件
# Rakefile
require './app'
require 'sinatra'
require 'active_record'
require 'sinatra/activerecord/rake'
#require 'rake'
當我運行耙分貝:遷移,我得到下面複製錯誤。
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - db:migrate
/opt/test/ruby/6/app.rb:31:in `gets'
/opt/test/ruby/6/app.rb:31:in `gets'
/opt/test/ruby/6/app.rb:31:in `<top (required)>'
/opt/test/ruby/6/Rakefile:3:in `require'
/opt/test/ruby/6/Rakefile:3:in `<top (required)>'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/rake_module.rb:28:in `load'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/rake_module.rb:28:in `load_rakefile'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:689:in `raw_load_rakefile'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:94:in `block in load_rakefile'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:93:in `load_rakefile'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:77:in `block in run'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:75:in `run'
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/gems/2.2.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.2.1/bin/rake:23:in `load'
/usr/local/rvm/gems/ruby-2.2.1/bin/rake:23:in `<main>'
/usr/local/rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval'
/usr/local/rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>'
更新: 我註釋掉這讓我跑耙分貝我app.rb文件的一部分:遷移。
rake db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke db:environment (first_time)
** Execute db:environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke db:environment
** Invoke db:load_config
** Execute db:schema:dump
但是,即使運行rake db:migrate之後,我也找不到數據庫中的表(使用sqlite)。我想通過我的紅寶石文件中添加管理模式,但會出現以下錯誤:
/usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/connection_adapters/sqlite3_adapter.rb:511:in `table_structure': Could not find table 'admins' (ActiveRecord::StatementInvalid)
from /usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/connection_adapters/sqlite3_adapter.rb:385:in `columns'
from /usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/connection_adapters/schema_cache.rb:43:in `columns'
from /usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/attributes.rb:93:in `columns'
from /usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/attributes.rb:98:in `columns_hash'
from /usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/inheritance.rb:205:in `subclass_from_attributes?'
from /usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/inheritance.rb:54:in `new'
from /usr/local/rvm/gems/ruby-2.2.1/gems/activerecord-4.2.4/lib/active_record/persistence.rb:50:in `create!'
紅寶石版本2.2.1p85
當我試圖運行耙分貝:回滾失敗抱怨的事實,要刪除的表不存在。
我可以看到schema.rb文件不耙分貝後更新:遷移
ActiveRecord::Schema.define(version: 20150907140840) do
end
當我試圖運行耙分貝:創建或耙分貝:設置程序後,命令將失敗。
我忘了註釋掉改變部分。 – user3813256