Ken*_*lis 20 ruby migration ruby-on-rails
我目前正在关注ruby on rails教程:http://guides.rubyonrails.org/getting_started.html.
我正在尝试将数据保存到数据库中.但是,当我运行时:rails server我收到以下错误:
Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development
Run Code Online (Sandbox Code Playgroud)
我查看了其他文章,当我跑步时:
bin/rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我得到了 rake aborted!
运行后:
rake db:abort_if_pending_migrations....
Run Code Online (Sandbox Code Playgroud)
我看到:
You have 1 pending migration:
20150805200129 CreateDatabases
SQLite3::SQLException: table "databases" already exists:
Run Code Online (Sandbox Code Playgroud)
它只是告诉我运行rake db:migrate再次启动.
它似乎已经存在.有没有办法取消挂起的迁移?
K M*_*lam 23
有时,即使删除本地开发数据库也不是一个好主意.有更好的方法可以删除/销毁Rails应用程序中的特定迁移.
您可以使用rails d migration命令来销毁特定的迁移:
rails d migration MigrationName
Run Code Online (Sandbox Code Playgroud)
要撤消与特定迁移相对应的更改,可以使用以下db:migrate:down方法:
rake db:migrate:down VERSION=XXX
Run Code Online (Sandbox Code Playgroud)
有时,事情可能会变得更加混乱,在这种情况下,另一个方便的事情是查看schema_migrations数据库中的表,其中包含version保存在其中的所有迁移.
您可以从此表中删除特定的迁移,如下所示:
delete from schema_migrations WHERE version = VERSION;
Run Code Online (Sandbox Code Playgroud)
如果您不希望再进行迁移.
Eug*_*Zol 13
您的迁移可能在中途失败(因此它创建了表,但没有完成).
您只是使用开发环境,因此可以删除数据库并从头开始重建它:
rake db:drop
rake db:create
rake db:migrate
Run Code Online (Sandbox Code Playgroud)