Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

한바다

SQL 쿼리 오류 및 DB불러오기 오류 본문

카테고리 없음

SQL 쿼리 오류 및 DB불러오기 오류

한바다진화 2024. 8. 14. 15:32

☑️ 테이블 생성시 오류 코드

Error Code: 1060. Duplicate column name 'member_email'	0.000 sec

[오류 해석]

오류 코드: 1060. 중복된 열 이름 'member_email'

 

-> 중복된 행을 제거하고 테이블 크리트를 완료 하였다!!

☑️ 스프링부트에서 폴더경로 확인하는 방법

작성한 폴더가 많을 경우 특정 파일을 봤을때 해당파일이 폴더 어느 경로를 타고 왔는지 확인하는 방법은 아래와 같다!

☑️ 로그인한 정보를 DB에서 불러오기 오류

로그인정보를 가져오는 것에 대한 나의 편견이 있었다!! 내가 작성한 js파일 내 axios 비동기 방식으로

controller에 api를 전달하여 내가 작성한 파일과(고객게시판) 내가 작성한 컨트롤러 코드와 상호교류하여

정보를 가져오는 거라고 생각 하였다!!

그러나 내가 작성한 코드에 console.log를 찍어보아도 sysout을 아무리 입력하여도 해당 값들이 출력되지

않았고 억지로억지로 axios코드를 입혀보았으나 데이터가 불러와지지 않았다!!

 

위와 같은 방안으로 진행되지 않은 가장 큰 이유는 이미 로그인js와 controller를 만든 팀원의 정보를

끌고 오는 것이였다!! (아직 개념이 설깃 들어가서 설명의 이유가 거칠다. 현재까지 내가 이해한 내용을 거칠게 

남아 담아 본다!!)

한마디로 내js파일에는 데이터를 불러오는 axios.get api를 기재할 필요도 없고 자바 백엔드 쪽에서 코드를 작성할

필요도 없었다!!

 

방안은 LoginConextProvider.js 파일을 생성하여  해당파일에서 제공되는 로그인맴버정보 값을 내가 작성한 js에서

끌어와서 사용할 수 있는 것이였다.

결국 데이터를 가져오는 것은 logi을 맡았던 팀원의 js파일 내 axios.get과 memberController의 소통을 내 js파일

내 필요한 회원정보를 끌어오는 것이였다!!

loginContext.js파일은 이미 생성이 되어 있었고, LoginContextProvider.js 파일이 없어 아래와 같이 작성하였다.

import React, {useState} from "react";
import LoginContext from "../login/LoginContext; //provider가 감싸는 곳에 전파할 내용

const LoginContextProvider = ({children}) => {
   //여기서 loginMember와 setLoginMember 상태를 관리한다
   const [loginMember,setLoginMember] = useState(null);
   
   return(
    <LoginContext.Provider value={{loginMember, setLoginMember}}>
     {children}
    </LoginContext.Provider>
  );
};
//다른 js에서 사용할 수 있게 내보내기
//export를 해주지 않으면 다른 js에서 사용할 수 없음
export default LoginContextProvider;

-> 해당코드는 loginMember와 setLoginMember 상태를 useState를 사용해 관리하고

    이를 LoginContext.provider value로 제공한다

 

[내가 작성한js파일 내 로그인정보를 가져오도록 설정한 코드 들]

import React,{useState,useEffect,useContext} from "react"; //useContext 훅 추가
import LoginContext from "../login/LoginContext";

const CustomerInquiry = () => {
 const {loginMember} = useContext(LoginContext); //로그인 정보 가져오기
 
 useEffect(() => {
  if(loginMember) {
   setMemberNo(loginMember.memberNo);
   setMemberName(loginMember.memberName);
   setMemberEmail(loginMember.memberEmail);
  }
 },[loginMember]);
}
▶ 위와 같이 axios를 사용하지 않고 이미 소통된 로그인정보를 import한 것으로 끌고와 내가 원하는 로그인정보만
  불러오면 되는 것이다!!

[스프링부트 Console]

[2m2024-08-15T13:33:24.768+0[36mcom.six.controller.MemberController      : member : Member(memberNo=0, memberId=nennass1, memberPw=asdfqwer, memberPwCheck=null, memberName=null, memberAge=0, memberGender=null, memberBirth=null, memberEmail=null, memberAddress=null, memberPhone=null, memberPayCount=null, memberGread=null, memberPoint=null)
2024-08-15T13:33:24.789+0[36mcom.six.controller.MemberController      : response member : {loginMember=Member(memberNo=1, memberId=nennass1, memberPw=asdfqwer, memberPwCheck=null, memberName=자다호, memberAge=15, memberGender=남자, memberBirth=20000202, memberEmail=nane@nar.com, memberAddress=서울 특별시, memberPhone=01000000000, memberPayCount=null, memberGread=null, memberPoint=10)}