Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю команду миграции, я всегда получаю ошибку ETIMEOUT, но если я закомментирую await populateTable()
, код будет работать без ошибок.
Я уже пыталсяувеличьте requestTimeout
с 15 секунд до 300 секунд, но это не помогло.
Вот мой код:
Создайте следующее:
// ormconfig.json
[
{
"name": "app",
"type": "mssql",
"host": "127.0.0.1",
"port": 1433,
"username": "root",
"password": "root",
"database": "app",
"logging": true,
"options": {
"useUTC": true
},
"entities": ["src/**/*.entity.ts"],
"migrations": ["migration/**/*.ts"],
"cli": {
"migrationsDir": "migration"
}
}
]
// root-dir/src/grouping/grouping.entity.ts
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
@Entity({ name: 'grouping' })
export class Grouping {
@PrimaryGeneratedColumn({ name: 'id', unsigned: true })
id: number;
@Column({ name: 'name', unique: true })
name: string;
}
// root-dir/migration/tables/grouping.ts
import { getRepository, QueryRunner, Table, TableIndex } from 'typeorm';
import { Grouping } from '../../src/grouping/grouping.entity';
export async function up(queryRunner: QueryRunner): Promise<any> {
await createTable(queryRunner);
await createIndexes(queryRunner);
await populateTable();
}
export async function down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.dropIndex('grouping', 'IDX_GROUP');
await queryRunner.dropTable('grouping');
}
async function createTable(queryRunner: QueryRunner) {
return queryRunner.createTable(
new Table({
name: 'grouping',
columns: [
{
name: 'id',
type: 'integer',
isPrimary: true,
isGenerated: true,
generationStrategy: 'increment',
unsigned: true,
},
{
name: 'name',
type: 'varchar',
isUnique: true,
},
],
}),
true,
);
}
async function createIndexes(queryRunner: QueryRunner) {
return await queryRunner.createIndex(
'grouping',
new TableIndex({
name: 'IDX_GROUP',
columnNames: ['name'],
}),
);
}
async function populateTable() {
await getRepository(Grouping, 'app').save([{ name: 'classification' }, { name: 'categorization' }]);
}
// root-dir/migration/initial-migration.ts
import { MigrationInterface, QueryRunner } from 'typeorm';
import * as groupingTable from './tables/grouping';
export class InitialMigration1550229771145 implements MigrationInterface {
async up(queryRunner: QueryRunner): Promise<any> {
await groupingTable.up(queryRunner);
}
async down(queryRunner: QueryRunner): Promise<any> {
await groupingTable.down(queryRunner);
}
}
Запустите команду миграции.
ts-node ./node_modules/typeorm/cli.js migration:run -c
Это должно создать таблицу Grouping
и вставить 2 записи, но я получаю следующую ошибку:
Запрос:CREATE TABLE "grouping" (целое число "id" NOT NULL IDENTITY (1,1), "name" varchar (255) NOT NULL, CONSTRAINT "UQ_07314fe287a837177015c041131" UNIQUE ("name"), CONSTRAINT "PK_135d73da724IM" K0506) 0507 (050) 50)) запрос: SELECT SCHEMA_NAME () AS запрос "имя_схемы": SELECT DB_NAME () AS запрос "db_name": SELECT * FROM "app". "INFORMATION_SCHEMA". "TABLES" ГДЕ ("TABLE_SCHEMA" = 'dbo' И "TABLE_NAME"= 'grouping') запрос: SELECT * FROM" app "." INFORMATION_SCHEMA "." COLUMNS "WHERE (" TABLE_SCHEMA "= 'dbo' AND" TABLE_NAME "= 'grouping)) запрос: ВЫБЕРИТЕ" columnUsages ". *," TableConstraints "." CONSTRAINT_TYPE "," chk "." Определение "FROM" app "."INFORMATION_SCHEMA "." CONSTRAINT_COLUMN_USAGE "" columnUsages "INNER JOIN" app "." INFORMATION_SCHEMA "." TABLE_CONSTRAINTS "" "tableConstraints" ON "tableConstraints". "CONSTRAINT_NAME" = "columnUsages". ". "check_constraints" "chk" ON "chk". "name" = "columnUsages". "CONSTRAINT_NAME" WHERE (("columnUsages". "TABLE_SCHEMA" = 'dbo' AND "columnUsages". "TABLE_NAME" = 'группировка' AND"tableConstraints". "TABLE_SCHEMA" = 'dbo' И "tableConstraints". "TABLE_NAME" = "grouping")) И "tableConstraints". "CONSTRAINT_TYPE" IN ('PRIMARY KEY', 'UNIQUE', 'CHECK') запрос:ВЫБЕРИТЕ "fk". "Name" AS "FK_NAME", 'app "AS" TABLE_CATALOG "," s1 "." Name "AS" TABLE_SCHEMA "," t1 "." Name "AS" TABLE_NAME "," col1 "."имя "AS" COLUMN_NAME "," s2 "." name "AS" REF_SCHEMA "," t2 "." name "AS" REF_TABLE "," col2 "." name "AS" REF_COLUMN "," fk "."delete_referential_action_desc "AS" ON_DELETE "," fk "." update_referential_action_desc "AS" ON_UPDATE "FROM" app "." sys "." foreign_keys "" fk "INNER JOIN" app "." sys "." foreign_key_columns "" fkc ""fkc". "constraint_object_id" = "fk". "object_id" INNER JOIN "app". "sys". "tables" "t1" ON "t1". "object_id" = "fk". "parent_object_id" INNER JOIN "app "." sys "." schemas "" s1 "ON" s1 "." schema_id "=" t1 "." schema_id "INNER JOIN" app "." sys "." tables "" t2 "ON" t2 "."object_id" = "fk". "referenced_object_id" INNER JOIN "app". "sys". "schemas" "s2" ON "s2". "schema_id" = "t2". "schema_id" INNER JOIN "app". "sys "." columns "" col1 "ON" col1 "." column_id "=" fkc "." parent_column_id "AND" col1 "." object_id "=" fk "." parent_object_id "INNER JOIN" app "." sys ". "columns" "col2" ON "col2". "column_id" = "fkc". "referenced_column_id" AND "col2". "object_id" = "fk". "referenced_object_id" запрос: SELECT "TABLE_CATALOG", "TABLE_SCHEMA","COLUMN_NAME", "TABLE_NAME" FROM "app". "INFORMATION_SCHEMA". "COLUMNS" WHERE COLUMNPROPERTY (object_id ("TABLE_CATALOG "+ '.' +" TABLE_SCHEMA "+ '.' +" TABLE_NAME ")," COLUMN_NAME ", 'IsIdentity') = 1 И запрос" TABLE_SCHEMA "IN ('dbo'): ВЫБЕРИТЕ« NAME »,« COLLATION_NAME »ОТ "sys". "Базы данных" запрос: ВЫБЕРИТЕ "app" AS "TABLE_CATALOG", "s". "Name" AS "TABLE_SCHEMA", "t". "Name" AS "TABLE_NAME", "ind". "Name"AS "INDEX_NAME", "col". "Name" AS "COLUMN_NAME", "ind". "Is_unique" AS "IS_UNIQUE", "ind". "Filter_definition" как "СОСТОЯНИЕ" ОТ "app". "Sys". "indexes "" ind "INNER JOIN" app "." sys "." index_columns "" ic "ON" ic "." object_id "=" ind "." object_id "AND" ic "." index_id "=" ind "."index_id" INNER JOIN "app". "sys". "columns" "col" ON "col". "object_id" = "ic". "object_id" AND "col". "column_id" = "ic". "column_id"INNER JOIN" app "." Sys "." Tables "" t "ON" t "." Object_id "=" ind "." Object_id "INNER JOIN" app "." Sys "." Schemas "" s "ON"s". "schema_id" = "t". "schema_id" WHERE "ind". "is_primary_key" = 0 И "ind". "is_unique_constraint" = 0 И "t". "is_ms_shipped" = 0запрос: CREATE INDEX "IDX_GROUP" ON "группировка" ("имя")
запрос: НАЧАЛО СДЕЛКИ
query: INSERT INTO "grouping" ("name") OUTPUT INSERTED. "id" VALUES (@ 0), (@ 1) - ПАРАМЕТРЫ: [{"value": "классификация", "type": "nvarchar", "PARAMS": []}, { "значение": "категоризации", "типа": "NVARCHAR", "PARAMS": []}]
запрос не выполнен: INSERT INTO "grouping" ("name") OUTPUT INSERTED. "id" VALUES (@ 0), (@ 1) - ПАРАМЕТРЫ: [{"value": "классификация", "type": "nvarchar" , "PARAMS": []}, { "значение": "категоризации", "тип": "NVARCHAR", "PARAMS": []}]
error: {RequestError: Тайм-аут: не удалось выполнить запрос в 15000ms
at Request.tds.Request.err [как userCallback] (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ mssql \ lib \ tedious.js: 629: 19)
at Request.callback (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ request.js: 37: 27)
в сообщении Connection.message (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 2136: 24)
at Connection.dispatchEvent (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 1084: 36)
в MessageIO.messageIo.on (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 984: 14)
на MessageIO.emit (events.js: 189: 13)
на MessageIO.EventEmitter.emit (domain.js: 441: 20)
в Message.message.on (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ message-io.js: 32: 14)
на Message.emit (events.js: 194: 15)
на Message.EventEmitter.emit (domain.js: 441: 20)
код: «ETIMEOUT»,
номер: «ETIMEOUT»,
состояние: не определено,
originalError:
{RequestError: Timeout: не удалось выполнить запрос в 15000ms
в RequestError (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ errors.js: 32: 12)
в сообщении Connection.message (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 2136: 33)
at Connection.dispatchEvent (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 1084: 36)
в MessageIO.messageIo.on (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 984: 14)
на MessageIO.emit (events.js: 189: 13)
на MessageIO.EventEmitter.emit (domain.js: 441: 20)
в Message.message.on (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ message-io.js: 32: 14)
на Message.emit (events.js: 194: 15)
на Message.EventEmitter.emit (domain.js: 441: 20)
at endReadableNT (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ node_modules \ readable-stream \ lib_stream_readable.js: 1077: 12)
сообщение: «Тайм-аут: не удалось выполнить запрос в 15000 мс»,
код: 'ETIMEOUT'},
имя: 'RequestError',
previousingErrors: []}
запрос: ROLLBACK
запрос: ROLLBACK
Ошибка во время выполнения миграции:
{QueryFailedError: Ошибка: время ожидания: не удалось выполнить запрос в 15000 мс
в новом QueryFailedError (C: \ Users \ me \ Workspace \ app \ api \ src \ error \ QueryFailedError.ts: 9: 9)
в C: \ Users \ me \ Workspace \ app \ api \ src \ driver \ sqlserver \ SqlServerQueryRunner.ts: 221: 37
в _query (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ mssql \ lib \ base.js: 1346: 25)
at Request.tds.Request.err [как userCallback] (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ mssql \ lib \ tedious.js: 671: 15)
at Request.callback (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ request.js: 37: 27)
в сообщении Connection.message (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 2136: 24)
at Connection.dispatchEvent (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 1084: 36)
в MessageIO.messageIo.on (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 984: 14)
на MessageIO.emit (events.js: 189: 13)
на MessageIO.EventEmitter.emit (domain.js: 441: 20)
сообщение: «Ошибка: время ожидания: запрос не был выполнен в 15000 мс»,
код: «ETIMEOUT»,
номер: «ETIMEOUT»,
состояние: не определено,
originalError:
{RequestError: Timeout: не удалось выполнить запрос в 15000msв RequestError (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ errors.js: 32: 12)
в сообщении Connection.message (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 2136: 33)
at Connection.dispatchEvent (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 1084: 36)
в MessageIO.messageIo.on (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ connection.js: 984: 14)
на MessageIO.emit (events.js: 189: 13)
на MessageIO.EventEmitter.emit (domain.js: 441: 20)
в Message.message.on (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ lib \ message-io.js: 32: 14)
на Message.emit (events.js: 194: 15)
на Message.EventEmitter.emit (domain.js: 441: 20)
at endReadableNT (C: \ Users \ me \ Workspace \ app \ api \ node_modules \ tedious \ node_modules \ readable-stream \ lib_stream_readable.js: 1077: 12)
сообщение: «Тайм-аут: не удалось выполнить запрос в 15000 мс»,
код: 'ETIMEOUT'},
имя: 'QueryFailedError',
предыдущие ошибки: [],
запрос:
'INSERT INTO "grouping (" name ") ВЫХОД ВСТАВЛЕН." Id "VALUES (@ 0), (@ 1)',
параметры:
[MssqlParameter {значение: 'классификация', тип: 'nvarchar', параметры: []},
MssqlParameter {значение: 'категоризация', тип: 'nvarchar', параметры: []}]}
нпм ERR! код ELIFECYCLE
нпм ERR! Errno 1
нпм ERR! app-api@0.1.0 миграция: запустите: ts-node ./node_modules/typeorm/cli.js migration:run -c "app_engine"
нпм ERR! Статус выхода 1
нпм ERR!
нпм ERR! Ошибка при переносе app-api@0.1.0: запустите скрипт.
нпм ERR! Это, вероятно, не проблема с npm. Скорее всего, выше вывод журнала.
нпм ERR! Полный журнал этого прогона можно найти в:
нпм ERR! C: \ Users \ я \ AppData \ Roaming \ NPM-cache_logs \ 2019-06-04T18_56_36_972Z-debug.log
Любая помощь очень ценится!
Обновление:
Я нашел это https://github.com/typeorm/typeorm/issues/3100#issuecomment-446309812 при просмотре предыдущих выпусков, и теперь он работает.