2016-06-28 19 views
0

文字列の文字数制限を減らすために、データベースのフィールドを更新しようとしています。私は、移行のIT爆弾を実行すると、私はエラーを取得するとき列を更新して文字列制限を減らす

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 

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' 
を、私はこのようになり、新たな移行を作成

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

:昔の移行は、このように見えました

私はこれがなぜ起こっているのか正確にはわかりません。

答えて

0

私はこれをコメントとしてやっていますが、まだ許可されていません。つまり、1行目のno_sale_label列のデータは18文字です。もしそうなら、私は速いUPDATEステートメントを提案して、すべての既存の値を17以下に減らします。