What to look for when your factory is missing id
So yesterday evening I’ve spotted a factory that was missing its _factory
suffix. Easy peasy, quick rename and off we go… yes.. no… suddenly factories linting failed with following error
FactoryGirl::InvalidFactoryError:
The following factories are invalid:
* lockoff - PG::NotNullViolation: ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, null, null, {}, {}, null, null, 2018-06-13 20:20:02.606616, 2018-06-13 20:20:02.606616).
: INSERT INTO "lockoffs" ("created_at", "updated_at") VALUES ($1, $2) RETURNING "id" (ActiveRecord::StatementInvalid)
null value in column "id"
? What? How? After checking absolutely everything reasonable, I’ve checked column definitions. It turned out, that during selecting changes for structure.sql
, somebody forgot to add one important piece to commit, that was effectively preventing automatic generation of consecutive primary key values.
--
-- Name: lockoffs id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY lockoffs ALTER COLUMN id SET DEFAULT nextval('lockoffs_id_seq'::regclass);
If you ever face similar issue, do not forget to look for something like that as well…
Tweet