본문 바로가기
반응형

Back-End13

[Docker][aws] WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested 에러 해결 문제 상황 spring boot 프로젝트를 도커 이미지로 만들고 docker hub 에 올렸다. 그리고 배포를 위해서 ec2 인스턴스의 리눅스 서버에서 이미지를 pull 받아서 실행하려 하는데 다음과 같은 오류가 나왔다. WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested 문제 원인 지금 쓰고 있는 노트북이 애플 M1 air 인데 도커를 빌드할 때 생성된 플랫폼이 ec2 인스턴스와 달라서 생긴 문제였다. 따라서 빌프 플랫폼을 맞추어서 빌드를 해준 뒤에 dockerhub 에 올리면 문제가 .. 2022. 12. 7.
[aws][rds] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 에러 해결하기 문제 상황 aws rds 를 사용하여서 mysql 데이터베이스를 구축하였다. 그 후 datagrip 으로 연결하려는데 다음과 같은 오류가 나오면서 연결이 되지 않았다. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 인터넷에 나와있는 거의 모든 방법을 다 해봤었다. 모두가 하라는 보안그룹 설정에서 인바운드 규칙을 설정하였다. (혹시 몰라서 모든 아이피로 허용도 했다.) 그리고 파라미터 그룹, mysql의 각종 설정 등을 수정하며 몇 시간을 보냈는데 해결 방법은 생각보다 간단했다. 해결 방법 aws 계정을 처음 생성하고 그대로.. 2022. 11. 28.
[Spring Boot] TypeNotPresentException 에러 [ 문제 상황 ] spring boot 로 개발하면서 애플리케이션을 실행하는데 TypeNotPresentException 이라는 오류가 나오면서 실행이 되지 않았다. [ 해결 방법 ] 해당 오류는 사용하는 변수의 타입이 정의되지 않아서 생기는 오류이다. 필자의 경우 UserEntity 라는 타입을 가진 userEntity 라는 변수를 사용하였다. 그러나 해당 파일에서 타입을 import 하지 않았었다. intellij 상에서 경고도 뜨지 않아서 찾기 힘들었었다. 그러나 다음과 같이 고치니 스프링을 정상적으로 실행할 수 있었다. val userEntity: UserEntity = userService.getUser(userId) 2022. 11. 8.
[Spring Boot] ERROR 31389 --- [nio-8080-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] 에러 해결하기 [ 문제 상황 ] Sping Boot 프로젝트를 진행하는데 다음과 같은 오류가 나면서 프로젝트가 시작되지 않았다. ERROR 31389 --- [nio-8080-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] [ 해결 방법 ] 위 오류는 return을 하는 어떠한 값 중에서 null이 반환되기 때문에 생기는 오류이다. 필자의 경우 tsv 파일에서 데이터를 가져와서 매핑을 했다. 해당 파일 원본은 존재하지만, out 폴더에 있는 해당 파일이 삭제되어서 위의 오류가 나온 것이었다. 일반적으로는 데이터베이스의 값을 가져와서 매핑을 한다. 이러한 경우라면 데이터베이스의 column 이름과 내가 가져온 이름이 맞는지 확인해서 null 값이 반환되었는지 확인해보길 바란다. 2022. 9. 13.
[Spring Boot] Kotlin + Spring Boot IntelliJ Hot Reload 설정 (compiler.automake.allow.when.app.running 없는 버그 해결) 처음 Spring Boot 프로젝트를 시작하고 개발을 하다보면 수정사항이 있을 때마다 재시작을 해야지 변경사항이 반영된다. 조금씩 바꿀 때마다 다시 시작한다는 것은 불편하고 시간도 낭비되어서 Hot Reload 설정을 찾아보았다. 그런데 대부분 Spring Boot + Java 가 대부분이고, IntelliJ 버전도 이전을 기준으로 한 설명이 많아 최근 버전을 기준으로 정리해보았다. 현재 스택 : Kotlin + Spring Boot + Gradle + IntelliJ 2022.2 [ Hot Reload 설정 방법 ] 1. Spring Boot Dev Tool 을 프로젝트 Dependency에 추가하기 코틀린에서는 프로젝트 루트에 build.gralde.kts 가 있다. 이 중에서 dependencies.. 2022. 9. 12.
[Django] ArrayField Integer 인 경우 test code 사용 방법 [ 문제점 ] 다음과 같이 django 에서 model 에 ArrayField를 사용해서 만들었다고 하자. from django.db import models from django.contrib.postgres.fields import ArrayField class User(models.Model): array = ArrayField(models.IntegerField()) ArrayField 안에는 IntegerField를 넣어서 정수의 배열을 받는다. 이를 테스트 하기 위해서 다음과 같은 테스트 코드를 작성하였다. import pytest from rest_framework import status from rest_framework.test import APITestCase @pytest.mark... 2022. 7. 25.
[NestJS] must be a number conforming to the specified constraints - body dto 타입 에러 해결 [ 문제점 ] Nest Js에서 post나 put을 할 때 body에 데이터를 담아서 보낸다. 이때 dto로 검증을 하는데 id는 number을 받기 위해서 다음과 같은 dto를 만들었다. import { IsNumber, IsOptional, IsString } from 'class-validator'; export class UpdatePlanDto { @IsNumber() readonly id: number; @IsOptional() @IsString() readonly date: string; } 이렇게 만들고 요청을 보내니 다음과 같은 400오류가 뜨면서 작동하지 않았다. [ 해결 방법 ] 이러한 오류가 나온 이유는 message에도 설명해주지만 id의 type이 number가 아니라는 것이다... 2022. 6. 11.
[Heroku] Running bash - Error: connect ETIMEDOUT 해결 [ 문제점 ] 명령 프롬프트에서 heroku bash를 사용하기 위해서 heroku run bash -a [appName]명령어를 사용하였다. 그러나 다음과 같은 오류가 나오면서 정상적으로 작동되지 않았다. C> heroku run bash -a [appName] Running bash on ⬢ motte-app-backend... done Error: connect ETIMEDOUT 44.194.95.226:5000 [ 해결 방법 ] 아직까지 이러한 원인이 나타나는 명확한 이유는 알지 못한다. 인터넷 원활한 곳에서 같은 명령어를 하면 또 되는 경우도 있고. 그러나 다른 방법으로 어떻게 해결했는지를 소개하려 한다. heroku 웹사이트에 들어가서 bash를 열려고 하는 앱에 들어간다. 그러면 오른쪽 상단.. 2022. 6. 10.
[NestJS] typeOrm migration 정리 typeorm 에서 database migration을 하기 위해서는 ormconfig에 마이그레이션 파일이 들어갈 위치를 지정해 주어야 합니다. root directory에 ormconfig.json파일에 써도 무방하지만 저는 develop 환경과 production 환경을 분리하기 위해서 ormconfig.ts파일을 만들고 환경변수 NODE_ENV에 따라서 두 환경을 분리하였습니다. import { ConnectionOptions } from 'typeorm'; const typeormConfig: ConnectionOptions = process.env.NODE_ENV ? { url: process.env.DATABASE_URL, type: 'postgres', synchronize: false, .. 2022. 6. 10.
반응형