我在使用postgresql資料庫的nestjs應用程式中使用typeorm。當我試圖創建一個遷移來同步我的資料庫以應用應用程式的變化時,以下查詢總是存在于生成的遷移檔案中(為了增加可讀性,我洗掉了一些不必要的查詢):
export class portal1631976435381 實作MigrationInterface {
name = 'portal1631976435381'/span>
public async up(queryRunner: QueryRunner)。) Promise<void> {
await queryRunner.query(`ALTER TABLE "organization" DROP COLUMN "isTransporter"`)。
await queryRunner.query(`ALTER TABLE "organization" DROP COLUMN "crmId"`)。
await queryRunner.query(`ALTER TABLE "organization" DROP COLUMN "telephoneNumber"`)。
await queryRunner.query(`ALTER TABLE "organization" ADD "crmId" character varying`)。
await queryRunner.query(`ALTER TABLE "organization" ADD "telephoneNumber" character varying`)。
await queryRunner.query(`ALTER TABLE "organization" ADD "isTransporter" boolean NOT NULL DEFAULT false`) 。
await queryRunner.query(`CREATE VIEW "inventory_based_on_receipt_item_view" AS SELECT "ri". "id" AS "receiptItemId" from someTableC`) ;
await queryRunner. query(`INSERT INTO "typeorm_metadata"("type", "schema", "name", "value") VALUES (1, 2, 3, 4)`, ["VIEW","public"," inventory_based_on_receipt_item_view",]) 。
await queryRunner.query(`CREATE VIEW " inventory_based_on_receipt_item_view" AS SELECT "ri". "id" AS " receiptItemId" from someTableB`)
await queryRunner. query(`INSERT INTO "typeorm_metadata"("type", "schema", "name", "value") VALUES (1, 2, 3, 4)`, ["VIEW","public"," inventory_based_on_receipt_item_view",]) 。
await queryRunner.query(`CREATE VIEW "receipt_item_transaction_view" AS SELECT "ri". "id" AS "receiptItemId" from someTableA`)
await queryRunner. query(`INSERT INTO "typeorm_metadata"("type", "schema", "name", "value") VALUES (1, 2, 3, 4)`/span>, ["VIEW","public", . ..]);
}
public async down(queryRunner: QueryRunner)。) Promise<void> { ...。}
}
無論對應用程式進行何種更改,所有的viewEntities都被Dropped并重新創建。
另一個問題是,inventory_based_on_receipt_item_view在查詢中被創建了兩次,有兩個稍微不同的查詢,盡管我只有一個viewEntity有這個名字(我真的不知道它來自哪里)。
另一個問題是,組織表的3個列(crmId、telephoneNumber和isTransporter)被洗掉,并以同樣的細節重新創建。
我想知道,有沒有什么更好的方法來遷移資料庫表,也許用另一個包(我自己找不到任何有用的東西)或者任何可以優化我的作業流程的解決方法?因為每當物體發生任何變化時,我都需要重新生成遷移檔案,并確保我洗掉每一個生成的錯誤查詢。
uj5u.com熱心網友回復:
我找到了問題所在。當執行遷移腳本時,它在遷移檔案夾中創建了一個遷移ts檔案,但dist檔案夾中以前的遷移檔案已經存在。所以新的遷移檔案會附加到dist檔案夾中已有的遷移檔案上。
在運行migration:generate之前洗掉dist檔案夾就解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/324753.html
標籤:
上一篇:使用IN條件和分組選擇行
