今天突然发现在项目的数据库后台报错,缺少一个表. 然后检查 migrate 的记录表,关于创建当前的表的 migrate 是有数据库记录的,但是数据库没有该表,不知道大家遇到过类似的问题没?
PS 测试了 如果删除该条记录,再次执行 rake db:migrate 数据库中 migrate 的记录表中成功插入 version 的版本号,但是 console 上什么都木有,同时数据库中没有应该建立的表。
把你的 migrate 的代码发出来看看
莫非加了rescue nil
rescue nil
#2 楼 @tumayun 代码 很简单
class CreateUserRemains < ActiveRecord::Migration def up create_table :user_remains do |t| t.date :start_date t.date :end_date t.integer :active_udid_count t.integer :paid_udid_count t.float :sales end end def down drop_table :user_remains end end
#2 楼 @tumayun 就是没的这张表 我很不淡定..
#1 楼 @tiseheaini 发了
在生产环境执行这个看看结果: bundle exe rake db:migrate:status
bundle exe rake db:migrate:status
还有,如果想重新创建环境用 bundle exec rake db:schema:load
bundle exec rake db:schema:load
从代码上看好像没什么错误。可能是我才疏学浅,毕竟还是小新手。 解决方法:命令行上运行 rake db:migrate VERSION=XXXXXXXXXXXX 如果你是 windows 那么就是 0,如果是 linux 那么就是 db/migrate/XXXXXXXXXXXX_XXXXX.rb 中的 XXXX 部分。是你第一次运行 db:migrate 时的数字。 意思就是撤销所有的 migrate 做的所有创建任务,然后重新执行 rake db:migrate 再创建一遍迁移任务。希望能解决你的问题。