#postgresql #nestjs #typeorm
#postgresql #nestjs #typeorm
Вопрос:
При попытке запустить миграции TypeORM, либо автоматически при запуске приложения, либо вручную с помощью командной строки TypeORM, создается только таблица миграций (и она остается пустой). Сами файлы миграции не выполняются.
Вот мой tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true
}
}
Вот мой package.json
...
"typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js",
...
Вот мой ormconfig.json
...
"entities": ["dist/**/*.entity{.ts,.js}"],
"synchronize": true,
"migrationsRun": true,
"migrations ": ["dist/migrations/*{.ts,.js}"],
"cli": {
"migrationsDir": "src/migrations"
}
...
Файлы миграции создаются с помощью командной строки TypeORM, и они должны заполнить некоторые таблицы (инструкции insert). Они не связаны с изменениями в схеме базы данных.
Пожалуйста, кто-нибудь может помочь мне заставить это работать?
Комментарии:
1. запустите эту команду
npx typeorm migration:run
2. Я пробовал, но единственное, что происходит, это то, что создается таблица миграций (если она еще не создана). Как будто файлы миграции, которые я создал с помощью инструкций insert, не найдены. Я проверил
"migrations": ["dist/migrations/*{.ts,.js}"]
, и все файлы (.ts и .js) на месте.
Ответ №1:
Это было глупо! Я думаю, что иногда самые простые проблемы труднее всего обнаружить.
Проблема была в ormconfig.json
файле. Я удалил это пустое пространство ( "migrations ":
), и все работало просто отлично.
Ответ №2:
вы должны были синхронизироваться с false synchronize:false
И из терминала запустить
npx typeorm migration:generate -n AnyNameYouWant
После этого вы можете запустить
npx typeorm migration:run
Возможно, вам также придется выполнить nest build
перед выполнением этих команд.
Комментарии:
1. Я забыл упомянуть, что файлы миграции, которые я создал, предназначены для заполнения некоторых таблиц (инструкции insert). Они не связаны с изменениями в схеме базы данных… Я отредактирую вопрос с помощью этой информации. Я пробовал с
synchronize:false
, но результат был тот же.
Ответ №3:
Я думаю, что это для синхронизации базы данных со схемой, и это не очень хорошая идея. «синхронизировать»: верно,