typeorm-seeding
typeorm-seeding copied to clipboard
errorMissingColumn when database columns have different naming in Entitiy file, seeding do not parse column names
Hello, I'm using PostgreSQL and NestJS.
When trying to make seed for my table, I'm getting an error that mentions that the column names in the Query used in the seed are not found in the table. I have namingStrategy: new SnakeNamingStrategy() in my orm.config.ts file. Using QueryBuilder and repository interface in different classes, like catching GET/POST/DELETE works fine, the seeder is the only problematic place.
My entity file:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
import { AttributeTypes } from "../models/external.models";
@Entity()
export class BulkUploadAttributeDefinition {
@PrimaryGeneratedColumn()
id: Number;
@Column()
columnName: String;
@Column()
section: String;
@Column()
columnLabel: String;
@Column()
columnType: AttributeTypes;
@Column()
isRequired: Boolean;
@Column()
isPermutable: Boolean;
@Column({nullable: true})
numberOfPermutations: Number;
}
Columns in the database:
"id"
"column_name"
"section"
"column_label"
"column_type"
"is_required"
"is_permutable"
"number_of_permutations"
Seeder code:
//file name: create-attribute-definition.seed.ts
import { Factory, Seeder } from 'typeorm-seeding'
import { Connection } from 'typeorm'
import { BulkUploadAttributeDefinition } from '../entities/bulk-upload-attribute-definition'
export default class CreateUsers implements Seeder {
public async run(factory: Factory, connection: Connection): Promise<any> {
const repository = connection.getRepository(BulkUploadAttributeDefinition);
await repository.save({ id: 10, column_name: 'Product 1', section: 'product-1', column_label: 'Product', column_type: 'Id', is_required: true, is_permutable: false, number_of_permutations: null });
}
}
Terminal response:
� TypeORM Seeding v1.6.1
√ ORM Config loaded
√ Factories are imported
√ Seeders are imported
√ Database connected
- Executing CreateUsers Seederquery: SELECT "BulkUploadAttributeDefinition"."id" AS "BulkUploadAttributeDefinition_id", "BulkUploadAttributeDefinition"."columnName" AS "BulkUploadAttributeDefinition_columnName", "BulkUploadAttributeDefinition"."section" AS "BulkUploadAttributeDefinition_section", "BulkUploadAttributeDefinition"."columnLabel" AS "BulkUploadAttributeDefinition_columnLabel", "BulkUploadAttributeDefinition"."columnType" AS "BulkUploadAttributeDefinition_columnType", "BulkUploadAttributeDefinition"."isRequired" AS "BulkUploadAttributeDefinition_isRequired", "BulkUploadAttributeDefinition"."isPermutable" AS "BulkUploadAttributeDefinition_isPermutable", "BulkUploadAttributeDefinition"."numberOfPermutations" AS "BulkUploadAttributeDefinition_numberOfPermutations" FROM "bulk_upload_attribute_definition" "BulkUploadAttributeDefinition" WHERE "BulkUploadAttributeDefinition"."id" IN ($1) -- PARAMETERS: [10]
query failed: SELECT "BulkUploadAttributeDefinition"."id" AS "BulkUploadAttributeDefinition_id", "BulkUploadAttributeDefinition"."columnName" AS "BulkUploadAttributeDefinition_columnName", "BulkUploadAttributeDefinition"."section" AS "BulkUploadAttributeDefinition_section", "BulkUploadAttributeDefinition"."columnLabel" AS "BulkUploadAttributeDefinition_columnLabel", "BulkUploadAttributeDefinition"."columnType" AS "BulkUploadAttributeDefinition_columnType", "BulkUploadAttributeDefinition"."isRequired" AS "BulkUploadAttributeDefinition_isRequired", "BulkUploadAttributeDefinition"."isPermutable" AS "BulkUploadAttributeDefinition_isPermutable", "BulkUploadAttributeDefinition"."numberOfPermutations" AS "BulkUploadAttributeDefinition_numberOfPermutations" FROM "bulk_upload_attribute_definition" "BulkUploadAttributeDefinition" WHERE "BulkUploadAttributeDefinition"."id" IN ($1) -- PARAMETERS: [10]
error: error: kolumna BulkUploadAttributeDefinition.columnName nie istnieje
at Parser.parseErrorMessage (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg-protocol\src\parser.ts:357:11)
at Parser.handlePacket (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg-protocol\src\parser.ts:186:21)
at Parser.parse (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg-protocol\src\parser.ts:101:30)
at Socket.<anonymous> (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg-protocol\src\index.ts:7:48)
at Socket.emit (events.js:315:20)
at Socket.EventEmitter.emit (domain.js:483:12)
at addChunk (_stream_readable.js:295:12)
at readableAddChunk (_stream_readable.js:271:9)
at Socket.Readable.push (_stream_readable.js:212:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
length: 291,
severity: 'BŁĄD',
code: '42703',
detail: undefined,
hint: 'Być może chodziło ci o wskazanie kolumny "BulkUploadAttributeDefinition.column_name".',
position: '84',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'd:\\pginstaller_12.auto\\postgres.windows-x64\\src\\backend\\parser\\parse_relation.c',
line: '3359',
routine: 'errorMissingColumn'
}
× Could not run the seed CreateUsers!
QueryFailedError: kolumna BulkUploadAttributeDefinition.columnName nie istnieje
at new QueryFailedError (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\src\error\QueryFailedError.ts:9:9)
at Query.callback (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\src\driver\postgres\PostgresQueryRunner.ts:178:30)
at Query.handleError (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg\lib\query.js:139:19)
at Client._handleErrorMessage (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg\lib\client.js:326:17)
at Connection.emit (events.js:315:20)
at Connection.EventEmitter.emit (domain.js:483:12)
at C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg\lib\connection.js:109:12
at Parser.parse (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg-protocol\src\parser.ts:102:9)
at Socket.<anonymous> (C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\pg-protocol\src\index.ts:7:48)
at Socket.emit (events.js:315:20) {
length: 291,
severity: 'BŁĄD',
code: '42703',
detail: undefined,
hint: 'Być może chodziło ci o wskazanie kolumny "BulkUploadAttributeDefinition.column_name".',
position: '84',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'd:\\pginstaller_12.auto\\postgres.windows-x64\\src\\backend\\parser\\parse_relation.c',
line: '3359',
routine: 'errorMissingColumn',
query: 'SELECT "BulkUploadAttributeDefinition"."id" AS "BulkUploadAttributeDefinition_id", "BulkUploadAttributeDefinition"."columnName" AS "BulkUploadAttributeDefinition_columnName", "BulkUploadAttributeDefinition"."section" AS "BulkUploadAttributeDefinition_section", "BulkUploadAttributeDefinition"."columnLabel" AS "BulkUploadAttributeDefinition_columnLabel", "BulkUploadAttributeDefinition"."columnType" AS "BulkUploadAttributeDefinition_columnType", "BulkUploadAttributeDefinition"."isRequired" AS "BulkUploadAttributeDefinition_isRequired", "BulkUploadAttributeDefinition"."isPermutable" AS "BulkUploadAttributeDefinition_isPermutable", "BulkUploadAttributeDefinition"."numberOfPermutations" AS "BulkUploadAttributeDefinition_numberOfPermutations" FROM "bulk_upload_attribute_definition" "BulkUploadAttributeDefinition" WHERE "BulkUploadAttributeDefinition"."id" IN ($1)',
parameters: [ 10 ]
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] seed:run: `ts-node ./node_modules/typeorm-seeding/dist/cli.js seed`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] seed:run script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\stanislaw.zan_enxoo\AppData\Roaming\npm-cache\_logs\2020-09-09T14_47_52_299Z-debug.log
Log file:
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'run',
1 verbose cli 'seed:run'
1 verbose cli ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'preseed:run', 'seed:run', 'postseed:run' ]
5 info lifecycle [email protected]~preseed:run: [email protected]
6 info lifecycle [email protected]~seed:run: [email protected]
7 verbose lifecycle [email protected]~seed:run: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~seed:run: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ\node_modules\.bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Pulse Secure\VC142.CRT\X64\;C:\Program Files (x86)\Pulse Secure\VC142.CRT\X86\;C:\Program Files (x86)\Common Files\Pulse Secure\VC142.CRT\X64\;C:\Program Files (x86)\Common Files\Pulse Secure\VC142.CRT\X86\;C:\Program Files\nodejs\;C:\Users\stanislaw.zan_enxoo\AppData\Local\Microsoft\WindowsApps;C:\Users\stanislaw.zan_enxoo\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\stanislaw.zan_enxoo\AppData\Local\Programs\Git\cmd;C:\Users\stanislaw.zan_enxoo\AppData\Roaming\npm
9 verbose lifecycle [email protected]~seed:run: CWD: C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ
10 silly lifecycle [email protected]~seed:run: Args: [
10 silly lifecycle '/d /s /c',
10 silly lifecycle 'ts-node ./node_modules/typeorm-seeding/dist/cli.js seed'
10 silly lifecycle ]
11 silly lifecycle [email protected]~seed:run: Returned: code: 1 signal: null
12 info lifecycle [email protected]~seed:run: Failed to exec seed:run script
13 verbose stack Error: [email protected] seed:run: `ts-node ./node_modules/typeorm-seeding/dist/cli.js seed`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:315:20)
13 verbose stack at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:315:20)
13 verbose stack at maybeClose (internal/child_process.js:1021:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid [email protected]
15 verbose cwd C:\Users\stanislaw.zan_enxoo\Documents\gitea\OneCPQ\One-CPQ
16 verbose Windows_NT 10.0.19041
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "seed:run"
18 verbose node v12.18.3
19 verbose npm v6.14.6
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] seed:run: `ts-node ./node_modules/typeorm-seeding/dist/cli.js seed`
22 error Exit status 1
23 error Failed at the [email protected] seed:run script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
Hi! Sorry for late response.
Seems like a problem with typeorm and how naming works. Did you try same query in some other places?
I have the same problem, pls any workarounds?
how did yo get the verbose log?
Sorry, I couldn't check this, but basically we are using TypeORM entity manager to save entity generated by factory.
await em.save<Entity>(entity, saveOptions)
If anyone of you could prepare an example in another repo, where creating an entity works, but in factory fails, I could check easily. Anyother problem, pls write it here.
The issue is not with TypeORM but Postgres. Use one naming convention for all the columns, either snake-case or camel-case. When using camel-case, remember to use double quotes around the column names at the time of creating the table.