묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
mysql 연결관련 에러 질문있습니다
application.yml파일을 작성하기 전에는 libraryappapplicition을 실행하면 잘 되었었은데강의를 따라 yml파일을 작성이후 연결이 되지않는다는 에러가 발생하였습니다 driver-class-name에서 driver를 찾을수 없다고 나오는데 이 문제 때문인것 같아요 혹시 버전이나 어떤 문제 때문인지 궁금합니다
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 CRUD 구현 오류 질문입니다.
안녕하세요 강의 잘 듣고 있습니다. 게시글 CRUD 부분에서 오류가 발생하는데yml 설정은 강의랑 똑같이 해줬습니다.서버 실행시키면java.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:116) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:290) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:123) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]이런 오류가 발생하고 테스트 실행시키면Invalid status line: "ÿ900" at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.createResourceAccessException(DefaultRestClient.java:575) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:498) at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.retrieve(DefaultRestClient.java:460) at kuke.board.article.api.ArticleApiTest.create(ArticleApiTest.java:24) at kuke.board.article.api.ArticleApiTest.createTest(ArticleApiTest.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.net.ProtocolException: Invalid status line: "ÿ900" at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:962) at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:133) at org.springframework.http.client.JdkClientHttpRequest.executeInternal(JdkClientHttpRequest.java:102)이런 오류가 발생합니다.구글링 해보고 권한 설정이랑 인코딩 설정도 다 했는데 도저히 안돼서 질문 남깁니다.. 추가)server: port: 9000 spring: application: name: kuke-board-article-service datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/article username: root password: root jpa: database-platform: org.hibernate.dialect.MySQLDialect open-in-view: false show-sql: true hibernate: ddl-auto: noneyml 설정입니다. 추가)artile의 build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j' implementation project(':common:snowflake') }이 부분은 강의 코드 보면서 그대로 쳤어서 runtimeOnly 'com.mysql:mysql-connector-j'는 원래 있었습니다. 스프링 버전 관련plugins { id 'java' id 'org.springframework.boot' version '3.3.2' id 'io.spring.dependency-management' version '1.1.6' } group = 'kuke' version = '1' allprojects { java { sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 } apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } }강의에 나온 버전 그대로 맞췄습니다. DB관련아이디 root에 비밀번호 root로 하면 접속 잘 되고 DB랑 테이블도 article로 통일했습니다. MySQLDialect -> MySQL8Dialect로 변경해도 안되는데 이유를 모르겠네요!... 추가)이렇게 나오는데 USER는 본명이라 가렸습니다!.. 추가)테스트 실행시키면 발생하는 오류입니다.. package kuke.board.article.api; import kuke.board.article.service.response.ArticleResponse; import lombok.AllArgsConstructor; import lombok.Getter; import org.junit.jupiter.api.Test; import org.springframework.web.client.RestClient; public class ArticleApiTest { RestClient restClient = RestClient.create("http://localhost:9000"); @Test void createTest() { ArticleResponse response = create(new ArticleCreateRequest( "hi", "my content", 1L, 1L )); System.out.println("response = " + response); } ArticleResponse create(ArticleCreateRequest request) { return restClient.post() .uri("/v1/articles") .body(request) .retrieve() .body(ArticleResponse.class); } @Getter @AllArgsConstructor static class ArticleCreateRequest { private String title; private String content; private Long writerId; private Long boardId; } @Getter @AllArgsConstructor static class ArticleUpdateRequest { private String title; private String content; } }코드는 강의랑 똑같은데 왜그럴까요..
-
해결됨Real MySQL 시즌 1 - Part 1
ORDER BY가 필요한 이유
데이터 개수 기반 방식 (동등 조건 사용시) 에서 이미 인덱스를 설정 했기 때문에KEY ix_userid_id (user_id, id)따로 후에 ORDER BY id를 해주지 않아도 정렬이 되어 있을 것이라고 예상되는데 작성해 줘야 하는 이유가 무엇일까요
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
mysql 설치가 되지 않습니다.
아래와 같은 에러로 mysql의 설치가 되지 않습니다. 분명, 제어판에서 mysql을 모두 삭제하고 다시 재설치를 진행하였는데도 불구하고, 계속해서 에러가 발생하여 강의 진행이 어렵습니다. Beginning configuration step: Writing configuration file Saving my.ini configuration file... Saved my.ini configuration file. Ended configuration step: Writing configuration file Beginning configuration step: Updating Windows Firewall rules Adding a Windows Firewall rule for MySQL92T on port 3306. Attempting to add a Windows Firewall rule with command: netsh.exe advfirewall firewall add rule name="Port 3306" protocol=TCP localport=3306 dir=in action=allow 확인됨 Successfully added the Windows Firewall rule. Adding a Windows Firewall rule for MySQL92T on port 33060. Attempting to add a Windows Firewall rule with command: netsh.exe advfirewall firewall add rule name="Port 33060" protocol=TCP localport=33060 dir=in action=allow 확인됨 Successfully added the Windows Firewall rule. Ended configuration step: Updating Windows Firewall rules Beginning configuration step: Adjusting Windows service Attempting to grant the required filesystem permissions to the 'NT AUTHORITY\NetworkService' account. Granted permissions to the data directory. Granted permissions to the install directory. Adding new service New service added Ended configuration step: Adjusting Windows service Beginning configuration step: Initializing database (may take a long time) Attempting to run MySQL Server with --initialize-insecure option... Starting process for MySQL Server 9.2.0... Failed to start process for MySQL Server 9.2.0. Database initialization failed. Ended configuration step: Initializing database (may take a long time)
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
article_id에 대해서
comment기능에서 comment테이블에 article_id을 shard key로 사용한다고 하셨는데 comment기능은 article기능에 뎃글을 다는 기능으로 article테이블에 article_id와 연관관계를 맺는 컬럼이 아닌건가요? 만약맞다면 article테이블에 article_id를 comment테이블에 article_id에 저장되게끔 해야 할 듯 한거 같은데 1고정값으로 넣는게 이해가 안되서 질문드렸습니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요!! 질문있습니다!!
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Comment 엔티티 생성시 연관관계를 Long articleId로 해줌으로써 Article 엔티티와 연관관계를 맺어준것일까요?Article과 Comment는 1:N 관계로 보이는데, comment 테이블 설계 당시 Article에 대한 외래키 관리를 comment 테이블에서 안해준 이유도 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글목록 최적화 전략설계 질문
조회용 게시글 목록 캐시가 미리 있는 상태에서 게시글이 수정이 된다면 게시글 조회 서비스에서 구독을 통해서 캐시 수정이 이뤄져야 하는걸까요?강의에서는 작성/삭제 두가지만 말해주시는거 같아서 수정인경우도 알고싶습니다~
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Snowflake 강의 질문입니다.
1. intelliJ java file outside of source root 에러가 뜹니다Snowflake 강의를 듣다가 질문이 생겨서 질문올립니다.강의자료에 있는 Snowflake 자료를 복사 붙여넣기 하다가 intelliJ java file outside of source root 에러가 뜹니다. 아래와 같이 시도를 해보았습니다.https://stackoverflow.com/questions/63521181/java-file-outside-of-source-root-intellij 이싸이트에 나와있는IntelliJ의 오른쪽 도구 모음에서 "gradle"을 클릭한 다음 새로 고침 버튼을 클릭합니다.File > Project Structure > Modules > Sources그리고 Java 파일 디렉토리를 소스로 표시를 변경하라고 나옴. 이 방법 시도 하지만common->src로 변경했더니 IntelliJ IDEA에서 동일한 resources 디렉터리가 두 개의 모듈에서 중복으로 설정되어 있을 때 발생하는 문제가 생겨 적용 불가능현재 프로젝트 close하고 다시 open함.java버전과 스프링부트 버전 확인 build.gradle에서 버전 확인위와 같이 해결방법을 모색해봤는데 해결방법을 모르겠습니다. 프로젝트 파일 첨부합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
무한 스크롤 질문있습니다
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.갑자기 페이징 쿼리 설명하다가 다음 강의에서 무한 스크롤에 대한 설명을 하시는데요. 1.이는 분산환경에서의 페이징 쿼리시의 단점을 보완하기 위한 방법으로 무한 스크롤을 설명하시는건가요??2.아니면 단순 무한 스크롤의 장점에 대해서 설명하시는건가요??3.아니면 분산 환경에서의 페이징 쿼리의 단점으로 인해 분산 환경에서는 무한 스크롤 방식을 선호한다는 것일까요??저는 SpringDataJPA를 사용하여 페이징과 Slice를 구현해본적이 있는데 해당 기능이라던가 QueryDSL과 같은 기능을 사용하지 않고 네이티브 쿼리를 사용하는 이유는 무엇일까요??
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
게시글 CRUD API 설계 강의에 대해 질문있습니다.
강의 1분 47초에서 샤드를 bored id는상관 없이 articleid로 짝수면 오른쪽, 홀수면 왼쪽으로 나뉘어진건가요? 샤딩 id가 articleid와 bored id 인건가요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
24:49초 Explain 쿼리 문에서 질문드립니다
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.저는 왜 Using where과 Using Index 두개가 같이 나올까요?오로지 Using Index만 나와야 커버링 인덱스를 이용해서 데이터를 성공적으로 조회했다 라고 이해했는데 Using where와 같이 나온거 보면 뭔가 MySQL 내부에서 커버링 인덱스만으로 데이터를 조회하지 못했으니 뭔가를 더 실행한 것일까요??# 5만 페이지 스킵 쿼리explain select * from ( select article_id from article where board_id = 1 ORDER BY article_id DESC limit 30 offset 1499970 ) t left join article on t.article_id = article.article_id;해당 쿼리에서는 Using where; Using index 이렇게 나옵니다.explain select * from article where board_id = 1 order by article_id desc limit 30 offset 90;해당 쿼리에서는 Usind index condition이 나옵니다저는 MySQL 쿼리문을 터미널에서 실행한게 아닌 DataGrip으로 실행 했는데 여기서 차이가 있는 걸까요??
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
강의 결과 질문 - SQLD, 데이터베이스 설계, 프로젝트 구축 하여 취업
안녕하세요.잔재미코딩님 인트로만 몇가지 보다가, 강의 12개 구매한 유저 입니다.저를 비롯하여 많은 분이 궁금하실만한 내용을 문의 드립니다! 현재 저는-python 기반의 django프로젝트를 따라치는 것으로만 블로그, 게시판만 만들었습니다.막상 혼자 만들려고 하면 막막해서 익숙해질때까지 해보자는 마음으로 약 10개정도 처음부터 끝까지 따라하고 따라했는데도 리팩토링은 가능하지만, 혼자 구축하기는 약간 어려움이 있습니다.-SQL의 경우에도 기초 구문이나 명령문 실행으로 인한 결과등은 알아도 데이터 설계는 5개 이상만 연결하려고 해도 약간은 막막하더라구요.총 학습기간은 파이썬 + 장고 + sql +html, css, javascript 로만 처음부터 지금까지 약 2년정도는 공부한 것 같은데, 방향성이 모호해서 그랬는지, 너무 덕지덕지 가져와서 기워붙였는지 실질적으로 스스로 할 수 있는 것은 많이 없습니다. 이런 상태에서 잔재미코딩 님의 강의 12강의 모두 학습하고 나서 기대할 수 있는 결과로는-sqld 가뿐히 합격할 정도-데이터베이스 어떤 모습이여도 너무 고급정도가 아닌 중급정도라도 수월하게 설계하고 만들 수 있을 정도-원하는 프로젝트 왠만한 것은 다 만들 수 있을까요?그렇기에 나아가서 취업적 역량을 가지고 충분히 취업할 수 있게 될까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
컬럼명
db에서의 컬럼명을 warehousingDate로 정의하고 자바에서 warehousingDate로 필드를 선언하여 테스트했을 때 매핑되지 않아 테스트에 실패합니다.db는 스네이크 케이스를 사용해서 jpa가 warehousingDate를 warehousing_date로 매핑시키려고 해서 그런 것 같은데 @Column(name = "warehousingDate")로 해도 안 되고 db의 컬럼명을 warehousing_date로 수정해야 정상 작동하는데 db에서 warehousingDate를 그대로 사용하고 정상적으로 매핑이 되게 하려면 어떻게 해야 하나요?
-
해결됨[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
지마켓 파일 불러왔는데, 테이블이 생성이 안됩니다
섹션8 - 30강 에서 시키는대로 CREATE DATABASE bestproducts USE bestproducts 하고 데이터 items, ranking 파일 불러왔는데요문제없이 실행이 되는데 테이블에 추가가 안됩니다 (새로고침 해도 안뜸)문제를 풀어볼 수가 없어서 답변 부탁드립니다
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
page값에 대해서
count 값을 구하는 로직을 보면 값이 커지면 커질수록 쿼리 속도가 현저히 저하되는 상황을 볼 수 있는데요. 이럴경우 어떠한 방식으로 대처하면될까요? 예를들어 500,000을 page값으로 설정하면 2~3초정도 걸리게 됩니다.
-
미해결견고한 결제 시스템 구축
docker Mysql 설정 문의
강의 초반 [5. 실습준비] 환경 설정과정에서docker mysql 설치환경이 어떻게 되는지 궁금합니다.1) vm 환경에서 linux 띄우고 그 vm 환경에서 docker mysql 실행ex) lima 등 서드파티 설정 후, 리눅스 환경에서 docker 설정 또는 macOS 에 그냥 도커 설치 후, 로컬 환경에서 컨테이너 실행? macOS 가 docker 랑 직접 호환되는건 아니라서 다른 vm 을 쓰는건 마찬가지긴한 것 같네요.[참고]`docker desktop` 의 유료 라이센스화로 실습환경(회사 PC 등) 에 따라 라이센스 이슈로 사용이 불가한 경우가 있어서테스트 구축 환경이나 참고할 레퍼런스가 있을지 궁금합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
블로그 정리 질문입니다.
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.쿠케님 안녕하세요.학습하면서 정리하는 내용(키워드 등)을 블로그에 업로드해도 괜찮은지 궁금해서 질문드려요~!
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
[실습] 인덱스 직접 설정해보기 / 성능 측정해보기 강의에서요.
-- 높은 재귀(반복) 횟수를 허용하도록 설정-- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다.)SET SESSION cte_max_recursion_depth = 1000000; -- 더미 데이터 삽입 쿼리INSERT INTO users (name, age)WITH RECURSIVE cte (n) AS( SELECT 1 UNION ALL SELECT n + 1 FROM cte WHERE n < 1000000 -- 생성하고 싶은 더미 데이터의 개수)SELECT CONCAT('User', LPAD(n, 7, '0')), -- 'User' 다음에 7자리 숫자로 구성된 이름 생성 FLOOR(1 + RAND() * 1000) AS age -- 1부터 1000 사이의 랜덤 값으로 나이 생성FROM cte;-- 잘 생성됐는 지 확인SELECT COUNT(*) FROM users; SELECT n + 1 FROM cte WHERE n < 1000000 -- 생성하고 싶은 더미 데이터의 개수SELECT n + 1 이 먼저 실행되고 FROM cte WHERE n < 1000000 이부분이 실행되니까.n이 999999까지 실행되고 n + 1 =1000000 이니까 FROM cte WHERE n < 1000000이부분에 걸려서 1000000이 실행 안되는게 맞지 않나요?
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
커버링 인덱스(Covering Index)강의에서 질문이있습니다.
1.제가 비전공도 할수있는 데이터베이스강의를 듣고 이 강의를 듣고있는데요. user테이블에 name의 fk가 들어가는게 맞지 않나요? 빨간색 글씨로요. name id pk도 빨간색처럼 pk를 적어야 하지 않나요?아니면 name테이블과 name인덱스 테이블이 따로 있는건가요?2.인덱스가 새로운 테이블을 생성하는건가요?3.풀인덱스스캔 강의 질문있습니다.CREATE INDEX idx_name ON users (name); 이 구문이아래처럼 테이블을 미리 만드는건가요?
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
todo데이터 테이블 설계 강의 질문있습니다.
사용자, 임무 한명의 사용자는 여러가지의 임무를 가진다. 한가자의 임무는 여러명의 사용자를 가진다. 예를들어 양치질하기는 a사용자,b사용자,c사용자로 등록할 수 있기 때문에 상품-주문테이블처럼(아래형식처럼) 테이블 분리되어야하지 않나요? 임무 no 임무명 임무설명 데드라인 1 청소하기 청소하기 1.27 2 빨래하기 청소하기 1.27 사용자-임무 no 임무명 (외래키) 사용자(외래키) 1 1 1 1 1 2