Saat Anda menjalankan rails db:migrate:reset
sebagai lawan dari rails db:reset
, skema database tidak dimuat dari schema.rb
tetapi malah direkonstruksi dari semua migrasi Anda. Dalam file migrasi dan skema, Anda tidak perlu menentukan id
bidang, satu disediakan secara default. Namun, mulai dengan Rails 5.1, ukuran default bidang id ditingkatkan
dari INT
ke BIGINT
untuk MySQL dan dari SERIAL
ke BIGSERIAL
untuk PostgreSQL. Jadi mungkin ada beberapa interaksi antara migrasi Anda, schema.rb
, dan skema aktual dalam database yang menyebabkan bidang id diperlakukan sebagai default (dan dihilangkan) dalam beberapa kasus dan secara eksplisit ditentukan dalam kasus lain, hanya karena perubahan ukuran default. Sulit untuk menebak sumber masalahnya tanpa melihat semua file yang relevan.