【发布时间】:2023-01-13 05:44:35
【问题描述】:
自从我升级到 TypeORM 0.3 后,我遇到了一个奇怪的错误,我生成了我的第一次迁移,因为数据库是空的,并且它是正确生成的。如果我之后生成第二次迁移,而不对实体进行任何更改,则生成的迁移会识别每个表上的更改,使用这样的脚本
await queryRunner.query(`ALTER TABLE \`clients\` CHANGE \`deletedAt\` \`deletedAt\` datetime(6) NULL`);
await queryRunner.query(`ALTER TABLE \`clients\` CHANGE \`type\` \`type\` varchar(255) NULL`);
await queryRunner.query(`ALTER TABLE \`clients\` CHANGE \`first_name\` \`first_name\` varchar(255) NULL`);
await queryRunner.query(`ALTER TABLE \`clients\` CHANGE \`last_name\` \`last_name\` varchar(255) NULL`);
await queryRunner.query(`ALTER TABLE \`clients\` CHANGE \`company_name\` \`company_name\` varchar(255) NULL`);
await queryRunner.query(`ALTER TABLE \`clients\` CHANGE \`administrator_name\` \`administrator_name\` varchar(255) NULL`);
这些只是第二次迁移的一些行,实际上我所有表的列都是在第二次迁移中使用 ALTER TABLE CHANGE 脚本编写的,这很奇怪,因为我没有进行任何更改。即使在接下来的迁移中,这些脚本也会继续显示。
预期行为
我希望每次生成迁移时只显示对实体所做的更改,而不是每一列
包.json
"build": "tsc -p tsconfig.build.json",
"typeorm": "node -r ts-node/register ./node_modules/typeorm/cli.js -d src/ormconfig.ts",
"migration:revert": "npm run typeorm migration:revert",
"migration:run": "npm run build && npm run typeorm migration:run",
"migration:generate": "npm run build && npm run typeorm migration:generate",
ormconfig.ts
const ormconfiguration = {
type: getConnectionType(process.env.TYPEORM_CONNECTION),
host: process.env.TYPEORM_HOST,
port: Number(process.env.TYPEORM_PORT),
username: process.env.TYPEORM_USERNAME,
password: process.env.TYPEORM_PASSWORD,
database: process.env.TYPEORM_DATABASE,
entities: [process.env.TYPEORM_ENTITIES],
migrations: [process.env.TYPEORM_MIGRATIONS],
},
.env
#APP_CONFIG
HOST=http://localhost:5000
NODE_ENV=development
#DATABASE
TYPEORM_CONNECTION=mysql
TYPEORM_HOST=db-dev
TYPEORM_USERNAME=root
TYPEORM_PASSWORD=admin321
TYPEORM_DATABASE=suitcase_db
TYPEORM_PORT=3306
TYPEORM_SYNCHRONIZE=false
TYPEORM_LOGGING=false
# TYPEORM_ENTITIES= ./src/entities/*.entity.ts
# TYPEORM_MIGRATIONS= ./src/migrations/*.ts
# for working with npm run start:dev
TYPEORM_ENTITIES=./dist/**/entities/*.entity.js
TYPEORM_MIGRATIONS=./dist/**/migrations/*.js
TYPEORM_ENTITIES_DIR= ./src/entities/
TYPEORM_MIGRATIONS_DIR= ./src/migrations/
TYPEORM_MIGRATIONS_RUN=false
TYPEORM_DROP_SCHEMA=false
我的环境
Dependency Version
Operating System Ubuntu 20.04
Node.js version 16.13
Typescript version 4.5.2
TypeORM version 0.3.9
【问题讨论】:
-
我在几乎相同的设置下遇到了完全相同的问题; CLI v0.3.11。生成迁移会创建一个巨大的更改文件,即使没有任何更改,就像它无法再正确检测到已经存在的内容一样。
标签: javascript mysql node.js ubuntu typeorm