Issue type:
[ ] question
[X] bug report
[ ] feature request
[ ] documentation issue
Database system/driver:
[ ] cordova
[ ] mongodb
[X] mssql
[ ] mysql / mariadb
[ ] oracle
[ ] postgres
[ ] cockroachdb
[ ] sqlite
[ ] sqljs
[ ] react-native
[ ] expo
TypeORM version:
[X] latest
[ ] @next
[ ] 0.x.x (or put your version here)
Steps to reproduce or a small repository showing the problem:
export type UserRole = 'user' | 'admin';
export const userRoles = {
USER: 'user' as UserRole,
ADMIN: 'admin' as UserRole,
};
@Column('simple-enum', {
default: userRoles.USER,
enum: Object.values(userRoles),
})
role: UserRole;
On each compilation related constraint is removed and recreated so existing data is overwritten with default value (in this case switching all admin roles to user). I tried also using native enum or setting an static array ['user', 'admin'] as Column enum option, both with same result.
Related trace from nest:
nest_1 | query: SELECT * FROM "nest"."INFORMATION_SCHEMA"."TABLES" WHERE "TABLE_NAME" = 'typeorm_metadata' AND "TABLE_SCHEMA" = SCHEMA_NAME()
nest_1 | dropping old check constraint: "CK__user__role__3631FF56" from table "user"
nest_1 | query: ALTER TABLE "user" DROP CONSTRAINT "CK__user__role__3631FF56"
nest_1 | renaming column "role" in to "role"
nest_1 | columns changed in "user". updating: role
nest_1 | query: ALTER TABLE "user" DROP CONSTRAINT "DF_6620cd026ee2b231beac7cfe578"
nest_1 | query: ALTER TABLE "user" DROP COLUMN "role"
nest_1 | query: ALTER TABLE "user" ADD "role" nvarchar(255) CHECK( role IN ('user','admin') ) NOT NULL CONSTRAINT "DF_6620cd026ee2b231beac7cfe578" DEFAULT 'user'
nest_1 | query: COMMIT