I’m using typeORM and I want to use migrations instead of syncing because I’m working in a team and it’s actually a lot of tedious work to get the db to a state in which the app actually functions.
The problem is that every column name I specify in the migration gets converted to lowercase which I’ve worked around by making all entity props snake_case (which is horrible btw). But foreign keys get converted to camelCase by (I think) postgres by default so I can’t relate anything to each other by foreign key in my migration. (because it needs to be camelCase but the query gets converted to lowercase)
Have i made clear what my problem is?
Is there a way to solve this, or is there a workaround?
Advertisement
Answer
In postgresql, column and table names are automatically converted to lowercase unless you include them in double quotes:
columnName becomes columnname "columnName" remains as columnName
See https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html — “Quoting an identifier also makes it case-sensitive, whereas unquoted names are always folded to lower case.”
So you should write migrations as, for example,
ALTER TABLE "tableName" ADD COLUMN "columnName" character varying ...
and queries similarly.