Ruby on rails Rails:db:migrate不一致地更改我的框上的schema.rb
从Github中下载了一些更新,运行了迁移Ruby on rails Rails:db:migrate不一致地更改我的框上的schema.rb,ruby-on-rails,postgresql,schema,database-migration,Ruby On Rails,Postgresql,Schema,Database Migration,从Github中下载了一些更新,运行了迁移rails db:migrate,并注意到Git跟踪对repo的更改。缩短的schema.rb的差异显示它插入id::serial,无处不在 有人知道发生了什么吗?倒这个安全吗?它不存在于其他开发人员的机器上?这是我不知道的环境吗 - create_table "boxes", force: :cascade do |t| + create_table "boxes", id: :serial, force: :cascade do |t|
rails db:migrate
,并注意到Git跟踪对repo的更改。缩短的schema.rb的差异显示它插入id::serial,
无处不在
有人知道发生了什么吗?倒这个安全吗?它不存在于其他开发人员的机器上?这是我不知道的环境吗
- create_table "boxes", force: :cascade do |t|
+ create_table "boxes", id: :serial, force: :cascade do |t|
t.text "name", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -107,7 +107,7 @@ ActiveRecord::Schema.define(version: 2019_05_27_143936) do
t.index ["user_id"], name: "index_boxes_on_user_id"
end
- create_table "comments", force: :cascade do |t|
+ create_table "comments", id: :serial, force: :cascade do |t|
t.text "body", null: false
t.integer "commentable_id", null: false
t.string "commentable_type", null: false
@@ -116,7 +116,7 @@ ActiveRecord::Schema.define(version: 2019_05_27_143936) do
t.datetime "updated_at", null: false
end
生成的schema.rb
或structure.sql
中的更改通常是在更新postgres服务器或rails时引起的
对于这个特定的问题,似乎已经有了答案:您作为链接给出的答案只是给出了它发生的原因以及如何解决它?通常您不需要解决任何问题。只需使用新生成的模式或结构。但是新生成的模式被迫使测试用例失败并喊出“ERROR:null value in column“id”违反了not null约束”项目始于rails v5.0,当前版本为5.2,因此每次新迁移都会更改旧表,并更改“id”的类型和约束schema.rb中的列可能会询问有关stacktrace的堆栈溢出和预期行为的问题:)