묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
DB 분리 관련 질문 드립니다.
강의 보다가 h2로 order-service, user-serivce, catalog-service 각각의 서비스마다 db를 따로 쓰다가 동기화 문제 때문에 하나의 mariadb로 써야 된다는걸 봤는데요. 현업에서는 MSA에서 서비스 마다 다른 db를 쓴다고 알고 있는데, 왜 그렇게 하신건지 궁금해서 질문 남깁니다. 서비스가 작아서 그렇게 해도 된다는 걸까요? 그럼 현업에서는 어떤 방식으로 해결하나요 동기화 문제
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 SQL
Weather Observation Station 12 Oracle 쿼리문 질문 있습니다.
인터프리터를 Oracle로 시도했을 때 쿼리문이 동작하지 않는 이유가 뭘까요??MySQL에서는 Correct가 뜨는데 Oracle에서는 동작하지 않습니다. Chatgpt에 물어봐도 원인을 찾지 못했습니다. 고수님들 알려주세요!!
-
미해결
스프링에서 @CreatedBy 와 AuditorAware 의 활용에 질문 드립니다!
@CreatedBy을 이용하면, 디비에 데이터가 입력될 때마다 작성자의 정보를 자동으로 기입할 수 있어서 많은 분들이 이용하시고 있습니다. 그리고 해당 @CreatedBy 값에 들어 갈 값은 AuditorAware을 통해 만들 수가 있는데요.<Q. 질문>그러나 만일.. 아래와 같이 생성시 점에서 ID 값과 Name 을 입력해 주어야한 다면... AuditorAware를 어떻게 이용해서 아래의 내용을 기입할 수 있는지 알고계신 분 있으실까요?(@CreatedBy 가 특정 AuditorAware 파일을 지정할 수 있으면 될 것 같은데... 방법을 못찾았습니다 ㅠ)@CreatedByprivate Long creatorId;@CreatedByprivate Stirng creatorName;
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
DB에 데이터 넣는 중간에 에러나면 되돌리는 장치같은건 없나요??
안녕하세요. async create({ createProductInput, }: IProductsServiceCreate): Promise<Product> { const { productSaleslocation, ...product } = createProductInput; const result = await this.productsSaleslocationsService.create({ productSaleslocation, }); const result2 = this.productsRepository.save({ ...product, productSaleslocation: result, }); return result2; }이번 강의를 보면 2개의 연관된 테이블에 데이터를 넣기 위해서 각각의 테이블에 데이터를 각각 넣어주는 2단계 구조라고 이해했습니다. saleslocation 테이블에 location 데이터 넣고 (1단계),받아온 데이터(result)를 product 테이블에 product 데이터와 함께 넣는 (2단계),이런 2단계의 구조로 이루어진것 같은데,만약에 2단계에서 에러가 나게 되면 1단계에 넣었던 데이터를 삭제하거나 되돌리는 안전장치 같은건 없나요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)
Async와 Job방식의 차이가 궁금합니다.
이전 강의에서 PacketHandller 부분에서 Async를 사용하지 않고 Blocking 방식을 사용하는 이유가 EAP 기반이기 때문에 이미 패킷마다 할당된 쓰레드에 의해 I/O가 이루어지기 때문이라고 이해했습니다.하지만 GameRoom같은 경우엔 GameRoom 담당 쓰레드가 존재하고 GameRoom 쓰레드의 동기화를 위해 JobSerialize를 이용하여 각 쓰레드가 GameRoom의 Job을 Push하여 동기화를 진행하는데이때 Job 안에서 DB I/O가 Blocking으로 이루어질 경우 GameRoom 쓰레드가 Blocking이 되고 그렇게되면 GameRoom이 느려지는 상황이 되기때문에 DB I/O 전용 쓰레드(JobSerialize)를 만들어 쓰는것으로 이해했습니다.결국 개념적으로 봤을때 GameRoom 쓰레드는 메인쓰레드 역할을 하고 DB I/O 처리는 서브쓰레드에게 맡기고 완료됐을때 결과만 다시 메인쓰레드에 돌려받는 NonBlocking I/O 방식인데Async/Await 역시 호출한 쓰레드를 Blocking 하지 않고 서브쓰레드에게 I/O를 맡긴뒤 작업이 완료되면 메인쓰레드에 결과를 반환하여 Await 이후에 처리한다고 이해하고 있습니다.그렇다면 복잡하게 DB I/O 전용 쓰레드를 만들어주지 않고 Async/Await만 사용해도 될것같은데 이렇게 하는 이유가 있을까요?아니면 이후에 강의에 이에 대한 개선이 나오는걸까요?
-
해결됨
데이터베이스 h2 실행
안녕하세요? 현재 김영한 강사님의 스프링 입문강의를 수강중인 학생입니다.데이터베이스 h2 다운받았고 강의에 따라 몇 번 실습해보고 컴퓨터를 부팅했습니다.다시 데이터베이스 h2를 실행하는 방법이 무엇인가요??
-
미해결
사용자가 기존 데이터 수정시에 null 구분 어떻게하시나요?
회원이 회원정보를 변경하였습니다.변경된 데이터는 "자기소개" 부분이며, 값을 비워버렸습니다.그럼 백엔드 입장에서는 아래 두가지 경우를 어떻게 구분할 수 있을까요?이 경우 사용자가 값을 비운건지?그게 아니면, 수정을 안해서 null 인 건지 제가 찾은 방법은수정시에도 모든 컬럼 갑을 받아서 기존 DB의 로우 전체를 업데이트 시킨다.사용자가 의도적으로 필드를 비워둔 경우 null 이 아닌, null을 의미하는 다른 대체 문자를 이용한다.- 이 경우 null 은 필드변경이 없는 경우 이외에 보편적으로 이용하는 방법이나 스마트한 방법이 있을까요...?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
ManyToOne 관계 설정 시 궁금한 점이 있습니다.
[질문 내용]안녕하세요! 강의를 들으며 제 사이드 프로젝트의 데이터베이스를 설계하는 과정에서 궁금증이 생겨 질문드립니다. 저는 Content라는 엔티티 클래스를 만들고 이를 상속받는 Post, Comment 클래스를 만들었습니다. Content라는 부모 엔티티 클래스를 만든 이유는 내용을 담는 body라는 필드를 Post와 Content가 동일하게 가지기 때문입니다. 후에 프로젝트가 커지면 image, link등과 같은 여러 필드들이 Content에 추가될 예정입니다. 이때 Post는 title 필드를 추가적으로 가지고 있고 Comment를 여러 개 가질 수 있는데, 일반적인 상황에서 동일한 엔티티 클래스를 상속받은 클래스끼리도 이러한 ManyToOne 관계를 가지게 설계하는지 궁금합니다.
-
미해결지금 당장 NestJS 백엔드 개발 [사주 만세력]
manses.sql DB Import 하는데 오류가 납니다.
saju-db-prod.sql import 는 정상적으로 되었는데,이어서 manses.sql DB Import 하는데 오류가 납니다.ERROR 1062 (23000) at line 24: Duplicate entry '1' for key 'manses.PRIMARY'
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
ServiceException: Unable to create requested service 뜨는 분들 보세요
ServiceException: Unable to create requested serviceHibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set프로젝트 시작했는데 이런 에러 뜨시는 분들 해결책 공유 드립니다.우선 첫번째로 Mysql 서버가 켜져있는지를 확인해봅니다. Workbench를 켜서 Mysql connect를 해주세요.그래도 안 된다면, 두번째로 application.yaml에 아래처럼 코드를 추가해줍니다.이처럼 database:mysql을 추가해줍니다.이렇게 하면 대부분 해결되실겁니다. ps. 추가적으로 이후에 unknown database라는 주의 문구가 뜨는 분들은 해당 이름으로 database를 아직 만들지 않아서 그렇습니다. url에 들어가는 이름으로 mysql workbench에서 database를 만들어서 진행하세요.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 사용 전 후 / 수동 오토 커밋
1. 이전 강의에서는 트랜잭션을 사용하지 않아 오토커밋이 되었고, 이번 강의에서는 트랜잭션을 사용해서 수동커밋이 된것으로 이해했는데 맞을까요?2. 수동커밋이 맞다면, 수동 커밋이 되어서 롤백을 할 수 있는 건가요?3. 이전 강의 까지는 트랜잭션을 사용하지 않고 DB 커넥션만 사용했다고 이해하면 되는 걸까요?4. 제가 테스트 해보고 싶었던 것은 '스프링 DB 1편'에 있는 '트랜잭션 - DB 예제3 - 트랜잭션 실습'처럼 수동 커밋의 경우 한 세션에서는 데이터가 들어간것이 보이지만 다른 한 세션에서는 안 보이는 것을 테스트 해보고 싶었습니다.그래서 랜잭션 롤백 부분 코드( transactionManager.rollback(status); )를 주석처리 하였고, H2 DB를 2개 띄웠습니다. 이 상태에서 save(), updateItem(), findItems()를 각각 실행해서 확인해 보면 두 세션 모두 데이터가 보이는 것을 확인할 수 있었습니다.커밋을 안했고 롤백도 안했는데 둘다 데이터가 보이는 걸까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
통합테스트에서 H2 Member테이블에 정보추가 X
통합테스트 진행하고있는데회원가입이 오류없이 잘 작동합니다.하지만 MEMBER테이블에 가보면 아무런 정보가 추가되지 않았습니다.어디에 문제가 있는걸까요? 다시 실행해보니 중복회원이라고 뜨긴합니다ㅠ그래도 테이블에는 내용이 없습니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
pgadmin
pgadmin 연결하는 자료를 보고 그대로 따라했는데 왜 저는 테이블이 없는 상태로 만들어질까요? pgadmin 마스터비밀번호와 docker postgres 비밀번호가 같아야 한다든지 그런 이유일까요??
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
DB와 Repository의 관계가 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 스프링 MVC 수업을 수강한 학생입니다.Repository와 DB테이블 간에 관계가 궁금해서 질문올립니다.(1) 예를들어 AuthService 가 있을때 UserRepository를 사용하셨는데, 왜 AuthRepository를 만들지 않고 UserRepository를 사용하셨나요? (2) ReservationService를 구현하기 위해 Reservation 이라는 테이블과 ReservationRepostory가 있습니다. 만약 추가적으로 필요한 정보가 User 테이블에 있어서 UserRepository 가 필요하다면, ReservationService가 ReservationRepository와 UserRepository 을 DI 해서 사용ReservationRepository에 User 테이블에 접근하는 Query를 추가하여 사용[ReservationRepository, UserRepository 나눠서 구현 vs ReservationRepository에 추가로 구현]어떤게 맞을까요??아래는 예시코드입니다. @Service @RequiredArgsConstructor public class MyBatisReservationService implements ReservationService { private final ReservationRepository reservationRepository; private final RoomRepository roomRepository; private final RoomKindRepository roomKindRepository; private final PlaceRepository placeRepository; @Service @RequiredArgsConstructor public class MyBatisReservationService implements ReservationService { private final ReservationRepository reservationRepository;감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cmd에서 h2.bat 실행한거 끄면 안되나요??
선생님께서 이제 이거를 끄면 정보가 날아가니까 끄면 안된다고 하셨는데 그럼 cmd에서 h2.bat을 실행해놓은 상태로 계속 cmd를 켜놔야하는건가요?? 나중에 insert를 많이 해서 정보를 DB에 많이 넣어놓은 상태면 노트북도 못끄나요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
db로 insert가 두 번 실행 됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 회원가입 페이지에서 이름을 입력하면 에러가 발생하여 중복확인 메소드를 지우고 실행해보니 입력한 이름이 2번 db에 입력됩니다. 콘솔 화면에 insert문이 반복되는걸로 보여지는데 어디서 잘못된걸까요ㅠㅠ
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 DB(mysql) 값 가져오기
플러터와 <php,DB(mysql)>을 사용하여 로그인&회원가입을 구현했습니다. 로그인을 하면 닉네임을 표시하고 싶은데 DB에서 ID에 해당하는 닉네임 값을 어떻게 가져와야할지 모르겠습니다. 로그인하면 로그인유지는 shared_preferences 사용하여 (id,pw)를 저장했습니다.
-
미해결스프링부트 시큐리티 & JWT 강의
안녕하세요 DB 연결에 관해 문의드립니다
안녕하세요 데이터베이스 사용에 관한 설명이 없어 문의드립니다 데이터베이스의 설치나, 계정, 연결에 관해 설명이 없어서 어떻게 해야 하는지 잘 모르겠습니다. 이 부분은 검색을 해서 알아서 DB연결을 하고 진행해야하는 부분일까요?
-
미해결
php 회원가입 db 질문 드립니다.
Fatal error: Uncaught Error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in C:\Apache24\htdocs\dbcon.php:8 Stack trace: #0 C:\Apache24\htdocs\index.php(2): include() #1 {main} thrown in C:\Apache24\htdocs\dbcon.php on line 8. APM 환경에서 php로 회원가입을 구현하고 싶은데 위와 같은 오류가 뜹니다. 오류 문장에 언급된 php 파일 첨부합니다.. 찾아봐도 잘 안 나오고 뭐가 문제인지 모르겠습니다. ㅇ위에서 말한 line 8은 아래입니다. 오래 붙잡았는데도 도저히 모르겠습니다.. 도와주시면 감사하겠습니다. $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); dbcon.php <?php $host = 'localhost'; $username = ''; $password = ''; $dbname = 'userdb'; $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); try { $con = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8",$username, $password); } catch(PDOException $e) { die("Failed to connect to the database: " . $e->getMessage()); } $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) { function undo_magic_quotes_gpc(&$array) { foreach($array as &$value) { if(is_array($value)) { undo_magic_quotes_gpc($value); } else { $value = stripslashes($value); } } } undo_magic_quotes_gpc($_POST); undo_magic_quotes_gpc($_GET); undo_magic_quotes_gpc($_COOKIE); } header('Content-Type: text/html; charset=utf-8'); session_start(); ?> index.php <?php include('dbcon.php'); include('check.php'); if(is_login()){ if ($_SESSION['user_id'] == 'admin' && $_SESSION['is_admin']==1) header("Location: admin.php"); else header("Location: welcome.php"); } ?> <!DOCTYPE html> <html> <head> <title>로그인 예제</title> <link rel="stylesheet" href="bootstrap/css/bootstrap1.min.css"> </head> <body> <div class="container"> <h2 align="center">로그인</h2><hr> <form class="form-horizontal" method="POST"> <div class="form-group" style="padding: 10px 10px 10px 10px;"> <label for="user_name">아이디:</label> <input type="text" name="user_name" class="form-control" id="inputID" placeholder="아이디를 입력하세요." required autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" /> </div> <div class="form-group" style="padding: 10px 10px 10px 10px;"> <label for="user_password">패스워드:</label> <input type="password" name="user_password" class="form-control" id="inputPassword" placeholder="패스워드를 입력하세요." required autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" /> </div> <div class="checkbox"> <label><input type="checkbox"> 아이디 기억</label> </div> </br> <div class="from-group" style="padding: 10px 10px 10px 10px;" > <button type="submit" name="login" class="btn btn-success">로그인</button> <a class="btn btn-success" href="registration.php" style="margin-left: 50px"> <span class="glyphicon glyphicon-user"></span> 등록 </a> </div> </br> </form> </div> </body> </html> <?php $login_ok = false; if ( ($_SERVER['REQUEST_METHOD'] == 'POST') and isset($_POST['login']) ) { $username=$_POST['user_name']; $userpassowrd=$_POST['user_password']; if(empty($username)){ $errMSG = "아이디를 입력하세요."; }else if(empty($userpassowrd)){ $errMSG = "패스워드를 입력하세요."; }else{ try { $stmt = $con->prepare('select * from users where username=:username'); $stmt->bindParam(':username', $username); $stmt->execute(); } catch(PDOException $e) { die("Database error. " . $e->getMessage()); } $row = $stmt->fetch(); $salt = $row['salt']; $password = $row['password']; $decrypted_password = decrypt(base64_decode($password), $salt); if ( $userpassowrd == $decrypted_password) { $login_ok = true; } } if(isset($errMSG)) echo "<script>alert('$errMSG')</script>"; if ($login_ok){ if ($row['activate']==0) echo "<script>alert('$username 계정 활성이 안되었습니다. 관리자에게 문의하세요.')</script>"; else{ session_regenerate_id(); $_SESSION['user_id'] = $username; $_SESSION['is_admin'] = $row['is_admin']; if ($username=='admin' && $row['is_admin']==1 ) header('location:admin.php'); else header('location:welcome.php'); session_write_close(); } } else{ echo "<script>alert('$username 인증 오류')</script>"; } } ?>
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
mysql connection 오류
안녕하세요, 강의 잘 듣고 있습니다. 다름이 아니라 강의를 듣는 도중에 Mysql과 연결이 되지 않아서 도움을 구하고자 합니다. Workbench에서 Test Connection을 누르면 계속 could not connect to mysql at "주소" ~ 이렇게 뜨게 됩니다. Vi 편집기를 통해서 Error Log를 확인했는데도 Timestamp가 잘못 설정되어 있다는 에러밖에 확인하지 못했습니다. 그래서 이게 Mysql이 안켜진건가 해서 Putty에서 Mysql을 실행 시키고 접속을 해도 계속 Connection이 안됩니다. Configure Server Management를 해야하나 고민해봤는데 이걸 하면 가상 리눅스환경에 mysql을 연결하는게 아니라 Window 운영체제 자체의 mysql을 연결하는거니 이건 아닌거 같고 지금 요 연결때문에 구글링만 일주일째 하고 있는데 안되고 있습니다. mysql에 문제가 있는건가 싶어 Select host from mysql.user을 해도 % 로 나와 있는 root가 잘 출력 되고, putty에서 netstat -ntlp를 해도 :::3306으로 잘 돌아가고 있는것 같습니다. EC2 주소랑 인바운드 규칙도 잘 설정이 되어 있는 상태인데 더이상 진행이 되지 않습니다. 혹시 해결 방법을 아실까요?