Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rakedb:migrate向所有表添加了默认值:nil_Ruby On Rails_Ruby_Migration - Fatal编程技术网

Ruby on rails rakedb:migrate向所有表添加了默认值:nil

Ruby on rails rakedb:migrate向所有表添加了默认值:nil,ruby-on-rails,ruby,migration,Ruby On Rails,Ruby,Migration,今天,我在rails应用程序中添加了一个新的迁移,并运行了rake db:migrate。迁移添加了一个新表 这导致将默认值nil添加到我的所有主键中。我没有添加任何新的gems,昨天我在staging中部署了一些代码 我包含了一个表的更改,但这适用于我的整个模式 我的rails版本是5.1.4 之前: create_table "faqs", id: :integer, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf

今天,我在rails应用程序中添加了一个新的迁移,并运行了rake db:migrate。迁移添加了一个新表

这导致将默认值nil添加到我的所有主键中。我没有添加任何新的gems,昨天我在staging中部署了一些代码

我包含了一个表的更改,但这适用于我的整个模式

我的rails版本是5.1.4

之前:

  create_table "faqs", id: :integer, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
    t.string "name", null: false
    t.text "description", null: false
    t.boolean "default", default: false, null: false
    t.integer "order", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end
之后:

  create_table "faqs", id: :integer, default: nil, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
    t.string "name", null: false
    t.text "description", null: false
    t.boolean "default", default: false, null: false
    t.integer "order", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end
以下是迁移:

class AddDataProtectionRequest结束
您运行的迁移是什么?您使用的是源代码管理吗?您的代码中是否存在其他差异?如果回滚,是否撤消此更改?是否可以导出FAQ表的SQL?通常,架构会从数据库中转储,因此如果它与迁移不同步,可能会发生一些奇怪的事情(通常是新的rails版本或不同的数据库版本)。您是否在本地计算机上更改/更新了数据库版本?这是最有可能的原因。为什么在迁移中声明id:integer,为什么为它声明default:nil?除非您另行指定,否则Rails将自动处理ID列的创建。当您在本地计算机上运行rake db:migrate时,架构可能已升级。如果版本与生产版本不同,则可能会导致一些问题。