テーブルusersを作成したとき、結果のテーブルには、整数として定義されたidという列がありました。
次のように、符号なしのbigintに変更しようとしました。
change_column :users, :id, :integer, :limit => 8, :unsigned => true
これによりbigintに変更されましたが、自動インクリメント列ではなくなりました(ただし、プライマリインデックスとして識別され、unsignedに設定されていませんでした(railsから移行が正常に実行されたと通知された場合でも)
次に、次のことを試してみました。
change_column :users, :id, :integer, :limit => 8, :unsigned => true, :null => false, :auto_increment => true
Railsによると、移行は正常に実行されましたが、何も変更されていません。
私は次のようなことを試すことができます:
change_column :users, :id, :primary_index
しかし、それは私が始めたところに私を正しく置くでしょう
MySQLコードで「execute」ステートメントを試すこともできますが、移行ファイルを「クリーン」に保ちたいと思います。誰かがこの問題に遭遇しましたか?
余談ですが、別の列でデフォルトをNULLに設定しようとして、ここ(およびGoogle)で調査しましたが、成功しませんでした。
編集:
一般的な移行によるテーブル作成の一部として作成された列「id」を編集する方法がないようです。これを行う唯一の方法は、MySQL構文を使用した「execute」ステートメントを使用することです。