我正在尝试更新数据库中的字段以减少字符串的字符限制。旧的迁移看起来像这样:
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'
我不确定为什么会这样,有什么指针?
答案 0 :(得分:0)
我这样做是作为评论但是我还不允许 - 所以第1行的no_sale_label列中的数据是什么,具体来说,它是18个字符。如果是这样,我建议使用快速UPDATE语句,以便将所有现有值减少到不超过17。