Incorrect string value: '\xEC\x98\x81\xEC\x96\xB4...'
위와 같은 에러가 나며 maria db를 사용한다면
ALTER TABLE 테이블 이름 convert to charset utf8;
위 명령어로 해결 가능하다. 위 명령어는 테이블의 charset 을 utf8로 변경하는 것이다.
Incorrect string value: '\xEC\x98\x81\xEC\x96\xB4...'
위와 같은 에러가 나며 maria db를 사용한다면
ALTER TABLE 테이블 이름 convert to charset utf8;
위 명령어로 해결 가능하다. 위 명령어는 테이블의 charset 을 utf8로 변경하는 것이다.
ec2 프리티어에서 만든 프로젝트를 빌드해보았다. 하지만 예상외로 시간이 많이 걸려 빌드를 실패하였다.
한 번에 50분이 넘어가는 경우도 있었다. 이를 해결하기 위해서 빌드를 빠르게 하는 방법과 해당 문제를 가진 사람들이 있는지 서치한 결과 gradle.properties 파일에 해당 값을 넣어주는 것으로 17분 만에 빌드에 성공하였다.
# for memory issue
org.gradle.daemon=false
# memory allotted to JVM
org.gradle.jvmargs=-Xmx1024m
# configure on demand
org.gradle.configureondemand=true
# parallel builds
org.gradle.parallel=true
# build Cache
android.enableBuildCache=true
# gradle caching
org.gradle.caching=true
램 1기가를 최대한 빌드하는데 쏘다 부으라는 ? 명령어로 보인다. 만약 gradle.properties 파일이 없다면 build.gradle 파일이 위치한 경로로 gradle.properties 파일을 생성해서 사용하면 된다.
| could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement (0) | 2022.08.10 |
|---|---|
| Incorrect string value: '\xEC\x98\x81\xEC\x96\xB4...' (0) | 2022.08.01 |
| duplicate content roots detected (0) | 2022.07.28 |
| Failed to start bean 'documentationPluginsBootstrapper' (0) | 2022.07.27 |
| invalid source release: 11 (0) | 2022.03.26 |
현재 저의 프로젝트는 자바 11을 사용하고 있기 때문에 11을 설치합니다.
우선 yum으로 설치할 수 있는 자바 버전을 확인합니다.
yum list java*jdk-devel

저의 경우 자바 7, 8 버전만 가능하다고 나왔습니다. yum 버전 업그레이드를 해야겠습니다.
sudo yum update
업데이트해도 설치할 수 있는 버전은 같았습니다. 아무래도 다른 방법을 사용해야 할 것 같습니다.
찾아 보니 아래와 같은 방식으로 자바 11을 설치할 수 있었습니다.
# aws coreetto 다운로드
sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm
# jdk11 설치
sudo yum localinstall jdk11.rpm
# jdk version 선택
sudo /usr/sbin/alternatives --config java
# java 버전 확인
java --version
# 다운받은 설치키트 제거
rm -rf jdk11.rpm
저같은 경우 이전 버전을 삭제 하려고 찾아보니 검색이 되지 않아서 위 과정으로 마무리 했습니다.
참조
AWS EC2에 JDK 11 설치하기 | BLOG
AWS EC2에 JDK 11 설치하기 작성일: 2020-07-05 17:44
pompitzz.github.io
기본 서버의 시간은 미국 시간대입니다. 한국 시간대가 되어야만 우리가 사용하는 시간이 모두 한국 시간으로 등록되고 사용됩니다.
date
위와 같이 date를 명령어로 입력하면 현재 사용하는 시간이 나타납니다. 예상한대로 저도 미국 시간대를 사용하고 있었습니다.
다음 명령어를 사용합니다.
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
2번째 명령어의 l은 L입니다. i의 대문자와 해깔릴 수도 있으니 주의해주세요
참조
스프링 부트와 AWS로 혼자 구현하는 웹 서비스
| mac에서 간단하게 ec2 서버 접근하기 (0) | 2022.07.31 |
|---|---|
| devops의 변천사 (0) | 2022.01.18 |
| AWS CLI (0) | 2022.01.16 |
외부에서 ssh 접속을 하려면 매번 아래와 같이 IP 탄력 주소를 알고있어야 됩니다.
ssh -i pem 키 위치 EC2의 탄력적 IP 주소
하지만 조금만 설정을 해놓으면 아래와 같이 접근할 수 있습니다.
ssh config에 등록한 서비스명
그럼 이제 진행해보겠습니다.
이제 다운 받은 키페어 pem 파일을 ~/.ssh/로 복사합니다. 이렇게 해두면 ssh 실행시 pem 키 파일을 자동으로 읽어 접속을 진행합니다.
이후부터는 별도로 pem키 위치를 명령어로 지정할 필요가 없게 됩니다.
cp pem 키를 내려받은 위치 ~/.ssh/
pem 키가 잘 복사되었는지 ~/.ssh 디렉토리로 이동해서 파일 목록을 확인합니다.
cd ~/.ssh/
ll
복사되었다면 pem 키 권한을 변경합니다.
chmod 600 ~/.ssh/pem키 이름
~/.ssh디렉토리에 config파일을 생성 합니다.
vim ~/.ssh/config
config파일의 내용은 아래와 같이 설정합니다.
Host 본인이 원한는 서비스명
HostName ec2의 탄력적IP 주소
User ec2-user
IdentityFile ~/.ssh/pem키 이름
작성이 끝났으면 :wq 명령어로 저장 종료합니다.
생성된 config 파일은 실행 권한이 필요하므로 권한설정을 합니다.
chmod 700 ~/.ssh/config
이제 실행해봅니다.
ssh config에 등록한 서비스명
참조
스프링 부트와 AWS로 혼자 구현하는 웹 서비스
| ec2 서버 생성 후 꼭 해야되는 초기 설정 (0) | 2022.07.31 |
|---|---|
| devops의 변천사 (0) | 2022.01.18 |
| AWS CLI (0) | 2022.01.16 |
쿼리 dsl 경로 설정 부분을 변경하니 해결되었다.
// QueryDSL
idea {
module {
val kaptMain = file("$buildDir/generated/querydsl")
sourceDirs.add(kaptMain)
generatedSourceDirs.add(kaptMain)
}
}
기존 경로
"build/generated/source/kapt/main"
변경한 경로
"$buildDir/generated/querydsl"
| Incorrect string value: '\xEC\x98\x81\xEC\x96\xB4...' (0) | 2022.08.01 |
|---|---|
| Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) (0) | 2022.08.01 |
| Failed to start bean 'documentationPluginsBootstrapper' (0) | 2022.07.27 |
| invalid source release: 11 (0) | 2022.03.26 |
| Unterminated string (0) | 2022.03.21 |
Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 swagger를 포함한 몇몇 라이브러리를 사용할 때 오류가 발생한다고한다.
application.yml 에 아래 설정을 추가하면 오류가 발생 하지 않는다.
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
https://www.inflearn.com/questions/230160
swagger 연동을 할려고 하는데 에러가 발생합니다 - 인프런 | 질문 & 답변
지금 현재 swagger 해보고 있는데 org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exc...
www.inflearn.com
| Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) (0) | 2022.08.01 |
|---|---|
| duplicate content roots detected (0) | 2022.07.28 |
| invalid source release: 11 (0) | 2022.03.26 |
| Unterminated string (0) | 2022.03.21 |
| 외래키 설정 오류 collation & SQL Error [1452] [23000]: (conn=3205) Cannot add or update a child row: a foreign key constraint fails (0) | 2022.03.14 |
Internet gateway(IGW)
- 인터넷으로 나가는 통로이다. 스타크래프트의 게이트웨이를 통해 외계에서 질럿이 소환되는 것과 비슷한 원리이다.
- Private subnet은 IGW로 연결되어 있지 않다.
Route table
- 트래픽이 어디로 가야 할지 알려주는 테이블
- VPC 생성 시 자동으로 만들어줌
NACL(Network Access Control List)/Security Group
- 보안 검문소
- NACL -> Stateless, SG -> Stateful
- Access Block은 NACL에서만 가능
NAT(Network Address Translation) instance/gateway
- Private VPC subnet 인터넷 게이트웨이 밖으로 연결되기 위해서 사용된다.
- Public Subnet을 거처서 Private 으로 연결된다.
- NAT instance는 ec2를 사용해서 구현된다.
- Net instance/ Net Gateway는 Public Subnet에 있어야 한다.
Bastion host
- 인터넷에서 private subnet에 접근하기 위해서 사용된다.
- Public subnet 내에 위치하는 EC2
VPC endpoint
- 서비스에 비공개로 연결, 퍼블릭 IP 주소를 필요로 하지 않는다.
- Aws의 여러 서비스들과 VPC를 연결시켜주는 중간 매개체
- Route Table을 통해 외부로 나가지못하는 Private VPC Subnt을 위해서 밖에 몰래 나가도록 도와준다.
| 쿼리스트링 파라미터를 배열처럼 전달 받는 방법 (0) | 2022.08.10 |
|---|---|
| DBbeaver에서 컬럼 삭제가 안보일 경우 (0) | 2022.08.10 |
| 크롬 드라이버의 find_element_by_css_selector 간단한 사용법 (0) | 2022.03.20 |
| 수동으로 프로젝트 제배포하기 (0) | 2022.03.06 |
| JPA를 사용하며 ORDERBY 주의점 (0) | 2022.03.06 |
이번에 Entity를 만들면서 Enum class를 사용하였다. QNA라는 클래스인데, 질문의 답변과 질문을 저장하는 테이블이다. 해당 질문에 답변이 되었는지 구별하기 위해서 isAnswered라는 변수를 만들었다. 해당 변수는 Enum 타입이다. 별생각 없이 Enum class를 변수로 두고 Entity를 생성하였다. 테이블의 enumtype에 들어간 값을 보니 순번이 들어가 있었다. 순번이 들어가 있으면 해당 순서에 있는 문자열을 확인해야 무슨 의미인지 확인할 수 있고 순서가 변경되었을 때 테이블에는 변경된 순서를 반영할 수 없는 문제가 있다. 이를 해결하기 위해서 @Enumerated 어노테이션이 필요하다.
@Enumerated 어노테이션의 타입은 2가지가 있다. ORDINAL, STRING이다. ORDINAL은 한국말로 순서를 나타내는 숫자 서수라고한다. ORDINAL을 사용할 경우 그냥 어노테이션을 사용하지 않아도 같은 효과를 볼 수 있기 때문에 해당 어노테이션을 사용했다면 목적은 STRING 타입을 사용하여 서수 대신에 해당 타입의 이름이 들어가게 하는 것이다. STRING 타입으로 설정하면 순번이 테이블에 기록되는 것이 아니라 ENUMTYPE의 이름이 저장되게 된다. 참고로 순서가 저장되게 되면 해당 칼럼은 INTEGER 타입이 된다.
EnumType 예시
public enum EnumType {
/** Persist enumerated type property or field as an integer. */
ORDINAL,
/** Persist enumerated type property or field as a string. */
STRING
}
ENTITY에서 사용 예시 by kotlin
@Enumerated(EnumType.STRING)
var isAnswered = AnswerType.NOT_ANSWERED
protected set
| LazyInitializationException과 트랜잭션, 영속성 컨텍스트에 대한 이해 (0) | 2024.12.01 |
|---|---|
| Kotlin, JPA 환경에서 Entity 설계에 대한 고민 (0) | 2024.09.08 |
| 자바 ORM 표준 JPA 프로그래밍 기본편 정리 1탄 (0) | 2022.08.07 |

프로젝트 JDK 버전은 11로 설정 되어있지만 세팅이 JDK 8로 설정 되어있기 때문이다.




| duplicate content roots detected (0) | 2022.07.28 |
|---|---|
| Failed to start bean 'documentationPluginsBootstrapper' (0) | 2022.07.27 |
| Unterminated string (0) | 2022.03.21 |
| 외래키 설정 오류 collation & SQL Error [1452] [23000]: (conn=3205) Cannot add or update a child row: a foreign key constraint fails (0) | 2022.03.14 |
| source release 11 requires target release 11 (0) | 2022.01.25 |

encodeURIComponent()
서버로 데이터를 보내기전 해당 데이터를 encodeURlComponent()로 감싸서 서버에게 보내면 성공적으로 특수문자(&,+)을 사용할 수 있었다.
URL의 특정한 문자를 UTF-8로 인코딩하여 하나, 둘, 셋, 혹은 네 개의 연속된 이스케이프 문자로 나타낸다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
encodeURIComponent() - JavaScript | MDN
encodeURIComponent() 함수는 URI의 특정한 문자를 UTF-8로 인코딩해 하나, 둘, 셋, 혹은 네 개의 연속된 이스케이프 문자로 나타냅니다. (두 개의 대리 문자로 이루어진 문자만 이스케이프 문자 네 개로
developer.mozilla.org
| Failed to start bean 'documentationPluginsBootstrapper' (0) | 2022.07.27 |
|---|---|
| invalid source release: 11 (0) | 2022.03.26 |
| 외래키 설정 오류 collation & SQL Error [1452] [23000]: (conn=3205) Cannot add or update a child row: a foreign key constraint fails (0) | 2022.03.14 |
| source release 11 requires target release 11 (0) | 2022.01.25 |
| Fail : 문자열을 날짜 및/또는 시간으로 변환하지 못했습니다. (0) | 2022.01.10 |