Когато стартирате rails db:migrate:reset
за разлика от rails db:reset
, схемата на базата данни не се зарежда от schema.rb
но вместо това се реконструира от всички ваши миграции. В миграциите и файловете със схеми не е необходимо да указвате id
едно е предоставено по подразбиране. Въпреки това, започвайки с Rails 5.1, размерът по подразбиране на полето за id беше увеличен
от INT
към BIGINT
за MySQL и от SERIAL
към BIGSERIAL
за PostgreSQL. Така че вероятно има някакво взаимодействие между вашите миграции, schema.rb
и действителната схема в базата данни, която кара полето за id да се третира като стандартно (и да се пропуска) в някои случаи и да бъде изрично указано в други, само поради промяната в размера по подразбиране. Трудно е да се познае източникът на проблема, без да се видят всички съответни файлове.