1

テーブルの列名を変更するために、既存のデータベースで移行を実行しようとしています。移行を実行すると、Blob/Textフィールドにデフォルト値を設定できないというエラーが表示されます。問題の列はテキスト列であり、null以外の属性がありますが、デフォルト値はありません。

Railsが試みる移行は次のとおりです。

ALTER TABLE xxxxxCHANGE abcd ABCDtext DEFAULT'' NOT NULL

今、私は移行に列タイプを変更するように依頼していません。列の名前を変更するように依頼しただけですが、なぜ移行は列タイプに何かをしようとしているのですか?

私はこの問題をグーグルで検索しましたが、説明や回避策を考え出していません。

助けていただければ幸いです。

ヴィクラム

4

1 に答える 1

0

ここで説明されているように、この問題には長年の未解決のチケットがあるようです。

レールのバグレポート

Rails のデフォルトの動作は、列を NULL にすることです。これは、空の文字列を Ruby に戻す際の存在チェックなどでの誤検出を防ぐためです。mySQL コンソールでテキスト列を NULL 値で動作するように再定義することで、これを回避できる可能性はありますか?

編集

移行ファイルでこれを行うことができます。これは Rails の方法ではありませんが、全員に電子メールを送信してローカル コピーを変更するよりもはるかに優れています。

MyModel.connection.execute "ALTER TABLE xxxxx CHANGE abcd ABCD text DEFAULT NULL"
于 2009-06-09T05:30:44.890 に答える