【问题标题】:Update column to decrease string limit更新列以减少字符串限制
【发布时间】:2016-06-28 15:16:15
【问题描述】:

我正在尝试更新数据库中的字段以减少字符串的字符数限制。旧迁移看起来像这样:

class AddNoSaleLabelToCompany < ActiveRecord::Migration
  def change
    add_column :companies, :no_sale_label, :string, :limit => 18, :default => "NO SALE"
  end
end

我创建了一个如下所示的新迁移:

class UpdateNoSaleLabelLimit < ActiveRecord::Migration
  def up
    change_column :companies, :no_sale_label, :string, :limit => 17, :default => "NO SALE"
  end

  def down
    change_column :companies, :no_sale_label, :string, :limit => 18, :default => "NO SALE"
  end
end

当我运行迁移时,它会 BOMBS 并出现错误:

StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Data truncated for column 'no_sale_label' at row 1: ALTER TABLE `companies` CHANGE `no_sale_label` `no_sale_label` var
char(17) DEFAULT 'NO SALE'

我不太确定为什么会这样,有什么建议吗?

【问题讨论】:

    标签: ruby-on-rails rails-migrations mysql2


    【解决方案1】:

    我会这样做作为评论,但我还不允许这样做 - 那么第 1 行的 no_sale_label 列中的数据是什么,具体来说,它是 18 个字符。如果是这样,我建议使用快速 UPDATE 语句,以便将所有现有值减少到不超过 17。

    【讨论】:

      猜你喜欢
      • 2015-02-10
      • 2021-03-05
      • 1970-01-01
      • 2017-02-14
      • 2010-11-21
      • 1970-01-01
      • 2019-06-09
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多