【问题标题】:Rails migration returning index too longRails 迁移返回索引太长
【发布时间】:2021-09-06 10:55:08
【问题描述】:

下面是我定义的迁移文件,用于重命名 schooling_document_types_managing_areas 表中的列,但问题是当我运行迁移时出现错误索引名称太长;限制为 63 个字符。然后我试了一下,类似

rename_column :schooling_document_types_managing_areas, :service_id, :managing_area_id, name: :index_schooling_documents_on_managing_area

然后它返回

ArgumentError:参数数量错误(给定 4,预期 3)。

知道我哪里出错了

class RenameColumnName < ActiveRecord::Migration[5.1]
  def up
    rename_column :schooling_document_types_managing_areas, :service_id, :managing_area_id
  end

  def down
    rename_column :schooling_document_types_managing_areas, :managing_area_id, :service_id
  end
end

【问题讨论】:

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


    【解决方案1】:

    删除索引并重新添加呢?

    def change
      remove_index :schooling_document_types_managing_areas, name: :index_schooling_document_types_managing_areas_on_service_id
      rename_column :schooling_document_types_managing_areas, :service_id, :managing_area_id
      add_index :schooling_document_types_managing_areas, name: :index_schooling_documents_on_managing_area
    end
    

    另外,我不确定您的 service_id 字段的生产数据的性质,但请记住,只需重命名 isn't the safest way,以防有人在您使用您的应用的确切时刻'正在运行您的迁移。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2012-09-21
      • 2019-02-13
      • 2020-04-10
      • 2019-02-14
      相关资源
      最近更新 更多