Po uruchomieniu rails db:migrate:reset w przeciwieństwie do rails db:reset , schemat bazy danych nie jest ładowany z schema.rb ale zamiast tego jest zrekonstruowany ze wszystkich twoich migracji. W migracjach i plikach schematów nie musisz określać id pole, jedno jest dostarczane domyślnie. Jednak począwszy od Rails 5.1, domyślny rozmiar pola identyfikatora został zwiększony
z INT do BIGINT dla MySQL i z SERIAL do BIGSERIAL dla PostgreSQL. Więc prawdopodobnie jest jakaś interakcja między twoimi migracjami, schema.rb , a rzeczywisty schemat w bazie danych, który powoduje, że pole id jest w niektórych przypadkach traktowane jako domyślne (i pomijane), a w innych jawnie określone, tylko ze względu na zmianę rozmiaru domyślnego. Trudno odgadnąć źródło problemu, nie widząc wszystkich odpowiednich plików.