0

我是新框架 Nest JS 并创建了示例 Restful API 但无法迁移实体文件。我尝试了很多方法它不起作用。第一次运行迁移命令以生成迁移文件,它工作正常。但是第二次创建一个新实体然后运行迁移命令它显示没有更改消息如何解决这个问题。

数据库配置 .ts 文件

{
            type: 'postgres',
            host: process.env.POSTGRES_HOST,
            port: parseInt(process.env.POSTGRES_PORT) || 5432,
            database: process.env.POSTGRES_DATABASE,
            username: process.env.POSTGRES_USER,
            password: process.env.POSTGRES_PASSWORD,
            entities: ["dist/**/*.entity{ .ts,.js}"],
            synchronize: true,
            "migrations": ["dist/migrations/*{.ts,.js}"],
            "migrationsTableName": "migrations_typeorm",
            // ssl:{
            //     rejectUnauthorized:false
            // }
          }

迁移命令

创建和生成迁移命令

npx typeorm migration:create -n User -d src/migrations

npx typeorm migration:generate -n User -d src/migrations

运行迁移文件

npx typeorm migration:run
4

1 回答 1

0

你应该只migration:generate在你的情况下使用。这将检查您当前的数据库结构并将其与实体文件进行比较,并在此基础上生成一个带有更改的新迁移文件。

您遇到的问题可能是由于覆盖。

migration:create将生成一个新的空文件,您运行migration:generate它不会覆盖该文件。

如果您想编写自己的迁移,您可以使用migration:create一种简单易用的方式来命名它并自动构建它。

编辑:

还要确保设置synchronize为 false,因为它会根据实体和更改自动迁移您的数据。

我总是关闭此功能并手动生成或编写迁移,因为它提供了最大的控制权。

于 2021-02-23T09:11:59.910 回答