묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
MariaDB에 회원가입 정보가 안 들어가집니다.
안녕하세요. 스프링부트와 리액트를 이용해 웹앱을 만들고 있는데요, mariadb를 연결해서 회원가입 정보를 저장하려고 하는데 저장이 안 됩니다. 잘 아시는 분들 코드 한번만 봐주실 수 있을까요? 인터넷과 GPT 모두 이용해보아도 해결이 안 되네요 너무 간절합니다 ㅠㅠ 부탁드립니다. User.javapackage com.dohwaji.model; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @Entity @Table(name = "users") @Data @AllArgsConstructor @Builder public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; public User() { } public User(String username, String password) { this.username = username; this.password = password; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } UserService.javapackage com.dohwaji.service; import com.dohwaji.model.User; import com.dohwaji.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import java.util.Optional; @Service public class UserService { @Autowired private final UserRepository userRepository; @Autowired private BCryptPasswordEncoder bCryptPasswordEncoder; public UserService(UserRepository userRepository) { this.userRepository = userRepository; } public User registerUser(User user) { user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); return userRepository.save(user); } public User authenticate(String username, String password) { Optional<User> optionalUser = userRepository.findByUsername(username); if (optionalUser.isPresent() && bCryptPasswordEncoder.matches(password, optionalUser.get().getPassword())) { return optionalUser.get(); } return null; } public User createUser(String username, String password) { User user = new User(username, password); return userRepository.save(user); } } UserRepository.javapackage com.dohwaji.repository; import com.dohwaji.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.Optional; @Repository public interface UserRepository extends JpaRepository<User, Long> { Optional<User> findByUsername(String username); } AuthController.javapackage com.dohwaji.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import com.dohwaji.service.UserService; import jakarta.servlet.http.HttpServletRequest; import com.dohwaji.repository.UserRepository; import com.dohwaji.model.User; @RestController // REST API 컨트롤러임 @RequestMapping("/api/auth") // 이 컨트롤러의 기본 URL 경로 public class AuthController { @Autowired // UserService 클래스의 인스턴스가 주입 private UserService userService; // 사용자 관련 비즈니스 로직을 담당하는 서비스 계층 @PostMapping("/login") // HTTP POST 요청이 /api/auth/login 으로 들어오면 이 메서드가 실행됨 public ResponseEntity<?> login(@RequestBody User loginRequest) { // login()메서드는 사용자 이름과 비밀번호를 받아 UserService의 authenticate()메서드를 호출 User user = userService.authenticate(loginRequest.getUsername(), loginRequest.getPassword()); if (user != null) { // 토큰 발행 로직 추가 가능 return ResponseEntity.ok(user); // 사용자 인증에 성공하면 사용자 정보를 포함한 HTTP 200 OK 응답을 반환 } else { return ResponseEntity.status(401).body("Invalid credentials"); // 사용자 인증에 실패하면 HTTP 401 Unauthorized 응답을 반환 } } @PostMapping("/register") // HTTP POST 요청이 /api/auth/register 로 들어오면 이 메서드가 실행됨 public ResponseEntity<?> register(@RequestBody User registerRequest, HttpServletRequest request) { // register() 메서드는 사용자 정보를 받아 UserService의 registerUser() 메서드를 호출 User user = userService.registerUser(registerRequest); request.getSession().setAttribute("currentUser", user); // 로그인 된 사용자 정보를 세션에 저장 return ResponseEntity.ok(user); // 회원가입에 성공하면 새로 생성된 사용자 정보를 포함한 HTTP 200 OK 응답을 반환 } @GetMapping("/logout") public String logout(HttpServletRequest request) { request.getSession().invalidate(); // 세션 무효화 return "redirect:/"; // 메인 페이지로 리다이렉트 } } build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.dohwaji' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.security:spring-security-crypto' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.mariadb.jdbc:mariadb-java-client' implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0' } tasks.named('test') { useJUnitPlatform() }
-
미해결데이터베이스 MariaDB(마리아디비)
수업자료 MARIADB설치PPT - 10.7.3버전이 없네요..
수업자료 MARIADB설치PPT - 10.7.3버전이 없네요구글링 10.7.3 다운로드는 Mirror가 Germany 뿐이구
-
해결됨
spring에서 Entity작성 후 [Table ' ' doesn't exist] 오류
영화 예매 관련 Entity를 작성 후 DB확인차 실행했는데 다른 Entity는 테이블이 잘 만들어진 것을 확인할 수 있었지만 이상하게 Seat Entity만 테이블이 만들어지지 않았습니다. WARN 3508 --- [Movie Ticketing] [ restartedMain] o.m.jdbc.message.server.ErrorPacket : Error: 1146-42S02: Table 'ticketing.seat' doesn't exist WARN 3508 --- [Movie Ticketing] [ restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist] org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist]at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createForeignKeys(SchemaCreatorImpl.java:303) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:250) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final]application.yml은ddl-auto.create입니다. 대소문자 구분이 문제인가 싶어 @Table(name = "seat")도 추가하고 lower_case_table_names = 1인 것도 확인했는데 똑같이 에러가 발생하더라구요하루종일 찾아봐도 이유를 잘 모르겠습니다 왜그런걸까요 ㅠㅠㅠSeat Entity 코드는 아래와 같습니다.@Entity @Table(name = "seat") class Seat { val row : String? = null val column : Int? = null //좌석 선택 @Enumerated(EnumType.STRING) val selectStatus : SelectStatus? = null // POSSIBLE, IMPOSSIBLE @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "theater_id") val theater : Theater? = null @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seat_id") val id : Long = 0L }
-
미해결스프링 프레임워크 입문자를 위한 따라하기
Maria DB 설치 관련해서 다운로드 문의
Maria DB 설치를 위해 강의와 동일하게 공식 사이트 접속을 했는데요. Mirror 부분에 나라가 Korea가 존재하지 않습니다. 현재 BlendByte-Taipai 라고 되어있는데 이거로 받으면 될까요??
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[스토리 그 자체, 실적 테이블](9:51)max_recursive_iterations
안녕하세요.heidiSQL 또는 mysql워크벤치이든 접속을 해서SET SESSION max_recursive_iterations = 10000 ;를 실행해보면 해당 variables 이 없다고 나오는데요. "Error Code: 1193. Unknown system variable 'max_recursive_iterations' " 혹시 인스톨하는 버전에 따라서 제공되는 시스템변수들이 달라지는 걸까요??mysql 은 윈도우용으로 버전은 8.0.36을 사용중입니다.
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
urlcodemap 쿼리 파일 확인요청
안녕하세요. [대사와 액션, 회차정보테이블]의 '특정요일 과거일자' 부분에서 나오는 'urlcodemap' 쿼리문 파일이 수업자료에 없는 것 같습니다. 인터넷 구글링 또는 예전 강사님강의자료에는 있긴한데요.그래도 수업자료로는 올려주시는 게 나을 듯 하여 글을 올립니다.
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[공유][대사와 액션, 회차정보테이블]contents2 생성관련
안녕하세요. mysql 버전이 8.0 대라서 그런지 contents2 테이블 생성하는 명령어(create or replace TABLE ... ) 가 실행이 안되서 다른 방식으로 수행하였습니다. 혹시 저와 동일한 에러가 나시는 분은 참고하세요. 우선 테이블을 만들고, group_concat() 이 selec까지는 잘 되는데 생성시에는 에러가 나서, /* SQL 오류 (1260): Row 6 was cut by GROUP_CONCAT() */ 구글링을 해보니 max length를 수정해줘야 한다고 하네요. SET group_concat_max_len=150000; 강사님이랑 같은 소스데이터를 사용하는데 왜 에러가 나는 지는 모르겠으나, 관련 명령어를 수행하고 나니 돌아갑니다.
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[주인공과 등장인물의 집합채, 웹소설정보테이블]작가명 생성관련
안녕하세요. [주인공과 등장인물의 집합채, 웹소설정보테이블](4:13) 작가명과 회원아이디를 랜덤하게 생성함에 있어서, 작가명하나에 회원아이디가 여러개로 생성이 될 소지가 있는데요. 실제로 돌려보니 중복이 나오네요. ㅡㅡ;혹시.. 묶어서 작가명하나에 회원아이디 하나로만 매핑되도록 생성하려면 어떻게 하면 될까요? 샘플로 하는 거라 중복이 이슈거리는 아니지만.. 좀 더 배우고자 하는 마음에 문의드립니다. ㅡㅡ;
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[주인공과 등장인물의 집합체,웹소설정보테이블]wn_novel테이블 생성
안녕하세요. wn_novel테이블 생성 (1:54) 의 수행을 위한 쿼리문이 수업자료로 다운받은 pdf 파일에는 링크가 안보이는데요.혹시 어디에서 확인할 수 있을까요??[강의화면][pdf] 03-2 DATA 생성-웹소설 정보.pdf
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련
[ERD로 보는 스토리와 테이블이라는 등장인물](17:53) 부분관련 문의드립니다. 안녕하세요. db설계에 대한 개념이 별로 없어서 질문드립니다. 태그정보의 경우, 연재요일과 같이 실적성으로 만들어야 한다고 하셨는데요. 태그정보의 코드/태그정보 테이블외에 작품번호/태그정보 테이블을 추가로 만들어야 할 지, 아니면 연재요일 테이블과 같이 작품번호/태그정보 테이블 하나만 만들면 되는 것일까요? 그리고 연재요일 테이블과 같이, 이런 류의 테이블은 별도의 요일에 대한 정보(코드/요일)테이블이 따로 없이 바로 실적테이블 형태로 구성을 하나요?
-
해결됨도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[가상데이터 생성]
안녕하세요. 워크벤치로 하다보니 동일한 쿼리문에 에러가 나는 경우가 더러 있네요. 구글링으로 보완해가면서 테스트 중입니다. 카페 사용관련 가상데이터 설명 (21:06분) 내용 중에 '1일2회 이상 등록된 전화번호 및 결제일자를 삭제 하는 쿼리문 실행시, "" 요런 메시지가 나와서, 구글링을 해보니, 삭제시 자기 테이블을 조회할 수 없기 때문이라고 나와서 수정을 했는데요. 요렇게 하면 제대로 수행이 되는 것 같습니다. 근데 궁금한 건... 강의내용의 쿼리문은고객의 해당일자 전체를 삭제하는 것 같은데요.하루 최초 또는 마지막 건수를 남기고 나머지를 삭제하는 쿼리문을 좀 알 수 있을까요?
-
미해결C# WPF .NET Core(7.0)
28강 영어단어맞추기 앱-1에 오류가 있어요.
Content="{Binding.}" 부분이 '중첩 형식이 지원되지 않습니다라고 뜨는데 소스상에 뭔가 다른 부분은 없는거 같아요. 왜 그런가요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
nestjs typeorm 에서 mariadb 고가용성 galera cluster 적용 관련
nestjs 좋은 강의 잘 들었습니다.~ 감사합니다.다만 질문이 있습니다.기존코드를 nestjs로 마이그레이션 하고 있습니다.mariadb 고가용성 적용을 해야됩니다. 구글링을 해도 해당 관련한 자료가 별로 없어서 질문드립니다.typeorm type을 보면 replication으론 mater, salves 필드로 고가용성이 지원되는데 cluster 구조로 지원이 되는게 맞는지 알고 싶습니다.아직 응용은 못하는 단계라서 질문 드립니다.만약 typeorm에서 cluster 지원이 되지 않는다면 어떤 방법으로 할 수 있나요?
-
미해결C# WPF .NET Core(7.0)
MVVM 2강
안녕하세요MVVM2강에서 4:19초 실행화면에서 버튼이 활성화 안되는데.. 왜 그런지 못찾겠습니다.항목클릭시 TextBox에 이름,나이는 들어오는데.. txt.Lenght가 값이 안들어 와서 false만 되네요혹시 닷넷 버전과 관련이 있을까요??? public class PersonModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }================================<TextBox x:Name="tbox1" Width="150" Text="{Binding ElementName=lv,Path=SelectedItem.Name, Mode = TwoWay, UpdateSourceTrigger=PropertyChanged}"/><TextBox Width="150" Text="{Binding ElementName=lv, Path=SelectedItem.Age, Mode = TwoWay, UpdateSourceTrigger=PropertyChanged}"/>================================= public bool CheckMsg(string txt){if(txt.Length > 0){return true;}else{return false; //글자가 없으면 false}=====================================
-
해결됨필요할 때 찾아 쓰는 SQL 쿼리북, Part I
fromdate, todate 구하는게 잘 이해가안되네요.
fromdate, todate 구하는게 잘 이해가안되네요.. 알고리즘을 자세히 설명해주실 순 없으신가요?
-
해결됨필요할 때 찾아 쓰는 SQL 쿼리북, Part I
urlcodemap.sql 파일 다운 받는곳이 없어요
urlcodemap.sql 파일 다운 받는곳이 없어요...
-
미해결공공데이터 CSV 파일을 이용해 테이블 만들기
[14강 도로명 주소db 구축(2)]관련
안녕하세요.평소에 궁금했던 분야였고 업무에 활용하고 싶었는데 아무래도 sql 초급수준이다 보니 어떻게 접근을 해야 할지 몰랐는데 본 강좌가 무척 도움이 되었습니다.이에 감사드리며 다소 기초적일 수 있는 질문 두가지를 드립니다. 아무리 생각해도 제 수준에서는 알 수가 없어서요.ㅡㅡ; 도로명주소db 활용방법 중 도로명코드의 update 쿼리문 중, rownum=1 을 사용하는 이유는 뭔가요? 어차피 where 조건으로 B.도로명코드=A.도로명 코드 AND B.읍면동일련번호 = A.읍면동일련번호 로 하면 한행만 나오지 않나요??간단히 쿼리문으로 조회를 해봤는데요. 조건상 1개의 행만 나와야 할 거 같은데 두개가 나오는 이유를 모르겠습니다. ( 23.10월 주소db 전체분 을 반영하였습니다.)
-
미해결공공데이터 CSV 파일을 이용해 테이블 만들기
[14강]도로명주소 DB구축(1) 관련
안녕하세요. 이해가 잘 안가는 게 하나 있어서 질문드립니다. DB 포맷을 보면 부가정보와 지번 정보가월변동분 포맷에 변경사유코드 필드가 없고일변동분에만 변경사유코드가 있는데요. 이런 구조면 전체분대비 뭐가 바뀌었는 지를 모를텐데... 혹시, 지번정보, 부가정보의 경우는 월변동분 파일을 무시하고 일변동분을 누적해서 사용하라는 의미인걸까요?? 지번_변동분.TXT 에서 몇개 관리번호로 전체분의 번지_ㅇㅇ.TXT와 비교시 행전체가 동일해서 변경분이라고 생각이 안되서요.
-
미해결공공데이터 CSV 파일을 이용해 테이블 만들기
[13강.zip_code_DB]변경분 처리sql관련
안녕하세요. 세세한 설명 감사드립니다.sql 초급이라 자세한 설명에 맞추어 잘 따라가고 있었는데요.13강의 변경분처리 sql 에대해 loop 처리관련하여서는 전체 코드를 좀 공유해주시면 안될까요?개념적으로는 알곘는데아직 loop 문과 변수에 대해서 적용하는 것에는 익숙하지가 않아서 어떻게 해야 할 지를 모르겠습니다. ㅡㅡ;
-
해결됨MariaDB 클라이언트 개발, HeidiSQL
결과창에서 '선택한 행 복사' 안보임
안녕하세요.HEIDISQL 12.3.0.6589 를 사용하고 있습니다. 결과 값에서 데이터복사하기에 우측 마우스를 클릭하면 '복사하기' 외에 '선택한 행복사' 가 나온다고 되어 있는데요. 저는 해당 메뉴가 안보이는데요.버전이 달라서 그런걸까요??