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.