ddodoi 님의 블로그
8주차-파트05: MySQL error: error code 1366, LAST_INSERT_ID(), MAX(), insertId 본문
웹풀스택 일일정리
8주차-파트05: MySQL error: error code 1366, LAST_INSERT_ID(), MAX(), insertId
ddodoi 2024. 10. 14. 15:44CHAPTER 1. MySQL error: error code 1366 incorrect integer value '' for column at row 1
orders테이블에 한글이 포함된 행을 추가하려는데 자꾸 다음과 같은 에러가 뜨면서 데이터가 안 들어갔다. 혹시나 data type을 잘못 검토했나 다 찾아도 아무런 이상이 없어서 검색해보니 MySQL에서 UTF-8 인코딩된 문자열을 처리하는 과정에서 발생하는 문제로, 주로 문자셋 설정이 맞지 않을 때 나타난 것이었다. 이 문제는 한글과 같은 유니코드 문자를 utf8mb4로 처리하지 못할 때 발생하는 것이었다.
문제 해결을 위해 cmd창에 접속해서 mysql로 접속해줬다.
docker exec -it mariadb /bin/bash
mariadb -u root -p
root
🌱해결 방법
1. 데이터베이스와 테이블의 문자셋 확인 및 수정
- 데이터베이스와 테이블이 utf8mb4 문자셋을 사용하는지 확인하고 그렇지 않다면 아래 명령어로 수정
-- 데이터베이스 문자셋 변경
ALTER DATABASE 스키마명(데이터베이스명) CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-- 테이블 문자셋 변경
ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
아니면
2. 특정 컬럼의 문자셋 변경
- 특정 컬럼의 문자셋이 제대로 설정되었는지 확인하고 필요하면 아래처럼 수정
ALTER TABLE 테이블명 MODIFY 특정컬럼명 자료형 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CHAPTER 2. LAST_INSERT_ID(), MAX()
<방금 insert한 테이터 pk 가져오는 방법>
✔️LAST_INSERT_ID()
LAST_INSERT_ID()는 MySQL에서 가장 최근에 자동 증가(AUTO_INCREMENT) 된 값을 반환하는 함수로 데이터베이스 연결(Session) 내에서 마지막으로 삽입된 레코드의 AUTO_INCREMENT 값을 추적할 때 사용된
시간차공격 >> 이전값을 들고오는 간간히 오류가 남!
✔️MAX()
MAX() 함수는 MySQL 및 여러 데이터베이스 관리 시스템에서 사용되는 집계 함수 중 하나로 지정된 컬럼의 최대값을 반환하는 데 사용된다.
CHAPTER 3. insertId
insertId는 MySQL에서 새로 생성된 행(row)에 대해 자동 증가되는 기본 키(primary key) 값을 반환할 때 사용된다. 즉, 데이터베이스에 새로운 레코드를 추가(insert)했을 때, 해당 레코드의 AUTO_INCREMENT 컬럼의 값을 나타낸다.
설명:
- insertId: 3 이라는 값은, 방금 추가된 행의 id 값이 3이라는 의미이다.
- 이 값은 주로 id 컬럼이 자동 증가(AUTO_INCREMENT)로 설정된 경우 반환된다.
- 예를 들어, orders 테이블에 새 주문이 추가되면 해당 주문의 고유 식별자인 id가 자동으로 증가하며, 그 값이 응답으로 제공된다.
'웹풀스택 일일정리' 카테고리의 다른 글
9주차-파트02: (0) | 2024.10.15 |
---|---|
9주차-파트01: Node.js의 비동기 처리 방식 (0) | 2024.10.14 |
8주차-파트04: MySQL 에러: errno: 121, Foreign Key 제약조건, IN, SQL로 배열 값 받기 (0) | 2024.10.13 |
8주차-파트02: SAFE MODE 해제, count(), AS, 서브쿼리, EXISTS (0) | 2024.10.12 |
8주차-파트01: LEFT JOIN, MYSQL에서 시간 구하기, 페이징(Paging) (0) | 2024.10.10 |