【问题标题】:missing column in Heroku db after delete add_column file删除 add_column 文件后 Heroku 数据库中缺少列
【发布时间】:2019-08-22 23:09:19
【问题描述】:

我创建了 add_column 迁移以在 users 表中添加列名“admin”。但是我意外删除了该文件并将我的代码推送到 Heroku 并执行了 db:migrate。现在,当我的本地机器管理员存在但我在生产中测试时,我看不到用户表中的管理员列。我再次尝试推送和迁移,但注意到正在工作。这是我的代码:

create_table "users", force: :cascade do |t|

   t.string "username"
   t.string "email"
   t.datetime "created_at", null: false
   t.datetime "updated_at", null: false
   t.string "password_digest"
   t.boolean "admin", default: false

end

运行时的 Heroku rails 控制台用户:

User(id: integer, username: string, email: string, created_at: datetime, updated_at: datetime, password_digest: string)

运行用户时的本地控制台:

 => User(id: integer, username: string, email: string, created_at: datetime, updated_at: datetime, password_digest: string, admin: boolean

谢谢你,这是我学习 rails 的第二个月 :)

【问题讨论】:

    标签: ruby-on-rails heroku ruby-on-rails-5


    【解决方案1】:

    我会再次犯同样的“错误”,但反过来。首先要做的是从本地数据库中删除该列...

    $ rails g migration remove_admin_from_users admin:boolean
    $ rails db:migrate
    

    然后,删除生成的迁移文件。

    现在,你重新开始,可以运行了

    $ rails g migration add_admin_to_users admin:boolean
    $ rails db:migrate
    

    然后,推送到 Github 和 Heroku,让您的开发和生产环境恢复同步。

    别忘了跑……

    $ heroku run rails db:migrate
    

    【讨论】:

    • 我只是犯了一个错误,得到一个新的错误列“admin”关系“users”不存在:ALTER TABLE“users”DROP COLUMN“admin”
    • 在什么环境下?开发还是生产(Heroku)?
    • 当我运行 heroku run rails db:migrate
    • 您是否删除了删除管理列时生成的迁移文件?更具体地说,db/migrate中的最后一个文件?
    • 我没有删除任何内容。我删除的唯一文件是昨天的 add_column_admin。我应该删除它吗?
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 2022-08-20
    • 2021-04-29
    • 2020-02-02
    • 2015-08-04
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多