yarn seed 명령어 실행 시 데이터 삽입 안됨
![]()
이렇게 성공 메세지는 뜨는데 테이블 조회를 해보면 데이터 삽입이 안되어 있습니다.
어떤부분에서 오류를 해결해야 할까요?....
답변 4
1
해결하였습니다.
해결방법은 우선 아래 명령어를 통해 재설치를 하였습니다.
npm i -D ts-node그리고 package.json 파일을 아래와 같이 수정하였습니다.
"typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js",
"db:create": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js db:create -d ./dataSource.ts",
"db:drop": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js db:drop -d ./dataSource.ts",
"seed": "ts-node ./node_modules/typeorm-extension/bin/cli.cjs seed:run -d ./dataSource.ts",
"schema:drop": "ts-node ./node_modules/typeorm/cli.js schema:drop",
"schema:sync": "ts-node ./node_modules/typeorm/cli.js schema:sync",
"db:migrate": "npm run typeorm migration:run -- -d ./dataSource.ts",
"db:migrate:revert": "npm run typeorm migration:revert -- -d ./dataSource.ts",
"db:create-migration": "npm run typeorm migration:create -- ./src/migrations/",
"db:generate-migration": "npm run typeorm migration:generate -- ./src/migrations -d ./dataSource.ts"그 다음 스키마를 완전 삭제 후 스키마를 다시 생성 후
yarn run start:dev를 통해 테이블을 만들어주고
yarn seed 명령어를 입력하니 데이터가 생성되었습니다.
0
import { DataSource, DataSourceOptions } from 'typeorm';
import dotenv from 'dotenv';
import { SeederOptions } from 'typeorm-extension';
dotenv.config();
const dataSource = new DataSource({
type: 'mysql',
host: 'localhost',
port: 3306,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: [__dirname + '/src/entities/**/*{.ts,.js}'],
migrations: [__dirname + '/src/migrations/**/*{.ts,.js}'],
seeders: [__dirname + '/src/database/seeds/**/*{.ts,.js}'],
charset: 'utf8mb4_general_ci',
synchronize: true,
logging: true,
} as SeederOptions & DataSourceOptions);
export default dataSource;여기처럼 seeders 옵션 넣어보셨나요?
0
//dataSource.ts파일
import { DataSource, DataSourceOptions } from 'typeorm';
import dotenv from 'dotenv';
import { SeederOptions } from 'typeorm-extension';
dotenv.config();
const dataSource = new DataSource({
type: 'mysql',
host: '127.0.0.1',
port: 3306,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: [__dirname + '/src/entities/**/*{.ts,.js}'],
migrations: [__dirname + '/src/migrations/*.ts'],
seeders: [__dirname + '/src/database/seeds/**/*{.ts,.js}'],
charset: 'utf8mb4_general_ci',
synchronize: true,
logging: true,
} as SeederOptions & DataSourceOptions);
export default dataSource;
//app.module.ts파일
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { LoggerMiddleware } from './middlewares/logger.middleware';
import { UserModule } from './users/user.module';
import { WorkspacesModule } from './workspaces/workspaces.module';
import { ChannelsModule } from './channels/channels.module';
import { DmsModule } from './dms/dms.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { SeederOptions } from 'typeorm-extension';
import { DataSourceOptions } from 'typeorm';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
UserModule,
WorkspacesModule,
ChannelsModule,
DmsModule,
TypeOrmModule.forRoot({
type: 'mysql',
host: '127.0.0.1',
port: 3306,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
keepConnectionAlive: true,
entities: [__dirname + '/src/entities/**/*{.ts,.js}'],
migrations: [__dirname + '/src/migrations/*.ts'],
seeders: [__dirname + '/src/database/seeds/**/*{.ts,.js}'],
charset: 'utf8mb4_general_ci',
synchronize: true,
logging: true,
} as SeederOptions & DataSourceOptions),
],
controllers: [AppController],
providers: [AppService, ConfigService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer): any {
consumer.apply(LoggerMiddleware).forRoutes('*');
}
}// src/database/seeds/create-initial-data.ts 파일
import { Seeder, SeederFactoryManager } from 'typeorm-extension';
import { DataSource } from 'typeorm';
import { Workspaces } from '../../entities/Workspaces';
import { Channels } from '../../entities/Channels';
export default class UserSeeder implements Seeder {
public async run(
dataSource: DataSource,
factoryManager: SeederFactoryManager,
): Promise<any> {
const workspacesRepository = dataSource.getRepository(Workspaces);
const channelsRepository = dataSource.getRepository(Channels);
await workspacesRepository.insert([
{
id: 1,
name: 'Slack',
url: 'slack',
},
]);
console.log('Workspace inserted');
await channelsRepository.insert([
{
id: 1,
name: '일반',
WorkspaceId: 1,
private: false,
},
]);
console.log('Channel inserted');
}
}모두 위와같이 적용을 해봐도 명령어만 실행될 뿐 데이터가 추가되지는 않습니다...
0
{
"name": "nest",
"version": "0.0.1",
"description": "",
"author": "",
"private": true,
"license": "UNLICENSED",
"scripts": {
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev-backup": "nest start --watch",
"start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json",
"typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js",
"db:create": "ts-node ./node_modules/typeorm-extension/bin/cli.cjs db:create -d ./dataSource.ts",
"db:drop": "ts-node ./node_modules/typeorm-extension/bin/cli.cjs db:drop -d ./dataSource.ts",
"seed": "ts-node ./node_modules/typeorm-extension seed:run -d ./dist/dataSource.js",
"schema:drop": "ts-node ./node_modules/typeorm/cli.js schema:drop",
"schema:sync": "ts-node ./node_modules/typeorm/cli.js schema:sync",
"db:migrate": "npm run typeorm migration:run -- -d ./dataSource.ts",
"db:migrate:revert": "npm run typeorm migration:revert -- -d ./dataSource.ts",
"db:create-migration": "npm run typeorm migration:create -- ./src/migrations/",
"db:generate-migration": "npm run typeorm migration:generate -- ./src/migrations -d ./dataSource.ts"
},
"dependencies": {
"@nestjs/common": "^9.0.1",
"@nestjs/config": "^2.2.0",
"@nestjs/core": "^9.0.1",
"@nestjs/platform-express": "^9.0.1",
"@nestjs/swagger": "^7.4.2",
"@nestjs/typeorm": "^9.0.0",
"class-transformer": "^0.5.1",
"cliui": "7",
"dotenv": "^16.4.5",
"mysql2": "^3.11.3",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.3.0",
"typeorm": "^0.3.0",
"typeorm-extension": "^3.6.1",
"wrap-ansi": "6",
"yargs": "16"
},
"devDependencies": {
"@nestjs/cli": "^9.0.0",
"@nestjs/schematics": "^9.0.1",
"@nestjs/testing": "^9.0.1",
"@types/express": "^4.17.8",
"@types/jest": "^29.5.2",
"@types/node": "^14.17.11",
"@types/supertest": "^2.0.12",
"@typescript-eslint/eslint-plugin": "^4.15.2",
"@typescript-eslint/parser": "^4.15.2",
"eslint": "^7.12.1",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.1.4",
"jest": "^29.5.0",
"prettier": "^3.0.0",
"run-script-webpack-plugin": "^0.2.0",
"source-map-support": "^0.5.21",
"supertest": "^6.3.3",
"ts-jest": "^29.1.0",
"ts-loader": "^9.4.3",
"ts-node": "^10.2.1",
"tsconfig-paths": "^3.9.0",
"typeorm-model-generator": "^0.4.6",
"typescript": "^5.6.2",
"webpack": "^5.95.0",
"webpack-node-externals": "^3.0.0"
},
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
}
}참고로 package.json파일입니다.
0
안녕하세요, 인프런 AI 인턴입니다. 서기문님.
yarn seed 명령어를 실행했을 때 성공 메시지가 나타나지만 실제로 데이터베이스에 삽입이 되지 않는 문제는 여러 가지 원인에 의해 발생할 수 있습니다. 다음은 문제를 해결하기 위한 몇 가지 점검 사항과 관련 링크를 안내드립니다.
데이터베이스 설정 확인:
typeorm설정 파일에서synchronize와logging옵션이 올바르게 설정되었는지 확인해 보세요.synchronize: true로 설정하면typeorm이 엔티티 변경사항을 자동으로 반영하게 해줍니다.경로 확인: Seed 파일의 경로와 데이터베이스 설정 파일에서 사용하는 경로가 일치하는지 확인하세요. 잘못된 경로 설정으로 인해 seed 파일이 제대로 인식되지 않을 수 있습니다.
ORM Config 확인:
ormconfig파일에서 데이터베이스 연결 설정이 올바르게 되었는지 점검하세요. 연결이 되지 않는 경우typeorm이 작동하지 않습니다.Seed 파일의 내용 검사: Seed 파일 내 삽입 데이터가 제대로 구성되어있는지 확인하세요. 데이터가 유효하지 않거나 제약조건에 맞지 않는 경우 삽입이 실패할 수 있습니다.
유사한 해결 방법을 소개하는 기존 게시물을 참고해 보세요:
- typeorm 0.3버전에 아직 seed기능 안나온걸까요?
- npm run seed 실행해도 테이블의 기본값이 생성되지 않는 이유가 뭔가요..??
위의 링크들은 지식공유자가 어떤 방법으로 문제를 해결했는지 보여주는 사례들입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의자료는 어디서 다운받나요?
0
110
3
질문 있습니다.
0
294
3
(강의 5:42 질문) providers를 통한 여러 개의 인스턴스 생성 & exports 통한 싱글톤 생성
0
154
2
코드 편집기 확장 프로그램
0
209
2
(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?
0
143
2
(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문
0
166
3
로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.
0
151
2
로그인방법이 고민됩니다.
0
190
2
yarn run db:create 시에 발생하는 데코레이터 오류
0
242
2
npm run db:create 시에 발생하는 decorating 오류
0
231
2
RxJS 디버깅 질문 있습니다.
0
187
3
CacheManager에 대해 질문 있습니다.
0
173
2
로깅은 어떻게 하는게 효율적일까요?
0
222
1
CORS 질문 있습니다.
0
417
2
쿠키 옵션에 대해서 질문 있습니다.
0
184
2
로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??
0
446
1
401 unauthorized문제
0
285
1
가드의 장점에 대해서 질문이 있습니다.
0
225
1
로그 관리에 대해 질문 있습니다.
0
251
2
CORS 에러 질문 있습니다.
0
317
2
배포 환경 DB 연결 질문 있습니다.
0
410
2
socket io 미 연결 문제 (nest & flutter)
1
1151
3
no elements in sequence 에러 관해서 질문이 있습니다.
0
451
1
NextJS와 NestJS 소켓IO 연결
1
1479
1





