소개
게시글
질문&답변
2023.11.09
설정에서 AutoIncrement를 바꿔도 수정이 되지 않습니다.
강의를 구매하지 않아 어떤 환경에서 문제가 발생하는지는 잘 모르지만 질문자 분의 질문을 추측해보고 비슷한 상황을 만들어보고 제 나름대로 해결책을 정리 해봤습니다. 질문자 문제현재 auto_increment값은 5 입니다.Row 데이터를 삭제 후 auto_increment 초기화 1로 변경하였습니다.하지만 auto_increment 은 그대로 값 5가 출력이 됩니다. 문제 상황auto_increment를 초기화를 시도해 값 1로 변경하려고 시도했습니다.SQL 구문 ALTER TABLE 데이터베이스.테이블 AUTO_INCREMENT = 1;로 초기화를 시도했습니다. 그렇지만 auto_increment 값은 초기화 전 값 그대로 변경 되지 않은 상태입니다. 예시// 데이터를 주입합니다. insert into books (author_fname) values ("Don"); insert into books (author_fname) values ("John"); insert into books (author_fname) values ("Sally"); insert into books (author_fname) values ("Jam"); select MAX(book_id) + 1 FROM books // 현재 AUTO_INCREMENT 값은 5입니다. DELETE FROM books // Row 데이터를 삭제합니다. insert into books (author_fname) values ("Don"); // 다시 Insert를 합니다. ALTER TABLE books AUTO_INCREMENT = 1; // AUTO_INCREMENT를 1로 초기화합니다. select MAX(book_id) + 1 FROM books // 현재 AUTO_INCREMENT 값은 6입니다. 답변Delete 명령어로 행(Row)을 삭제 시 Delete 명령어는 행을 삭제하지만 테이블에 공간에 남아 있습니다.그래서 Insert를 할 시 초기화 된 상태가 아닌 지워진 공간 위에서 추가 되기 때문에 Id 값은 +1이 된 상태로 값이 추가 됩니다.이 상태에서 AUTO_INCREMENT = 1를 초기화 해도 1로 변경이 되지 않습니다. MYSQL 공식문서 에는 AUTO_INCREMENT = N다음과 같이 정의 되어 있습니다.ALTER TABLE books AUTO_INCREMENT = N; 은 자동 증가 카운터 값을 현재 최대값보다 큰 값으로만 변경할 수 있습니다. AUTO_INCREMENT = N은 현재 최대값 보다 큰 수로만 변경이 가능함으로 1은 현재 카운트 5보다 작아서 변경이 불가능합니다.AUTO_INCREMENT 를 1로 초기화를 해야 한다면 Truncate table > 으로 테이블 데이터를 완전 초기화를 합니다.혹은Delete 를 한 상태에서 다음 최대값이 null이 된 상태를 확인 합니다. 이 상태에서 ALTER TABLE books AUTO_INCREMENT = 1로 초기화 하면 AUTO_INCREMENT 값은 1로 초기화가 됩니다. 참조- https://dev.mysql.com/doc/refman/8.2/en/innodb-auto-increment-handling.html
- 0
- 2
- 766
질문&답변
2022.10.10
백엔드 개발) 스프링 공부하기전 선수지식이 있을까요?
안녕하세요. 자바와 DB 공부를 끝내고 스프링 공부를 하실때 필요한 지식이 몇 가지 있습니다.Get, Post, Fetch, Delete, 상태코드, URI 등 HTTP의 개념이 필요합니다.그리고 스프링을 처음 설계 하시다보면 구조를 어떻게 잡고 시작할 지 고민을 하실껍니다. Controller -> Service -> Repository 구조인 클린 아키텍처를 알아야 합니다. 스프링으로 토이 프로젝트를 한 가지 진행을 해보시면서 필요한 개념을 그때 배우는 것이 훨씬 더 많이 배울 수 있을 겁니다.대강 생각나는데로 적어서 많이 부족하지만 위에 글이 도움이 되셨으면 좋겠습니다~~Referencehttps://spring.io/RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content (ietf.org)http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
- 0
- 1
- 516
질문&답변
2022.07.13
assertThat이 안됩니다.
Gradle.bulid 에 가셔서 assertJ 라이브러리를 추가하시면 될 것입니다. testCompile("org.assertj:assertj-core:3.11.1") Reference * AssertJ / Fluent assertions for java (joel-costigliola.github.io)
- 1
- 3
- 760