ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
사용 프로그램 & 버젼, filePath 등 환경
amazon linux 2023
인스턴스 유형 : t2.micro (프리티어)
발생날짜
2023년 12월 4일
상황
어느날 AWS EC2 접속 후 MySQL에 접속하려고 로그인하니 갑자기 에러 발생하면서 로그인이 안됨
에러 원인
보통 이 문제는 RPM으로 MySQL을 설치한 경우 생기는 에러라고 함
※mysql.sock파일은 rm 명령어로 삭제해도 다시 생겨 근본적인 해결책은 X
rm -rf /var/lib/mysql/mysql.sock
해결 방법
MySQL을 root 계정으로 설치했다면 mysql.sock의 소유권이 없기에 chmod와 chown 명령어를 이용해 권한을 바꿔주면 해결가능
코드
service mysqld stop // mysql 프로세스 정지
chmod 755 -R /var/lib/mysql // 권한 변경 : 지정 디렉토리의 하위포함 권한 전체 변경
chown mysql:mysql -R /var/lib/mysql // 소유자 변경 : mysql을 mysql이라는 소유자로 변경
service mysqld start // mysql 프로세스 기동
The bean 'userLoanHistoryRepository', defined in com.group.libraryapp.prac3.repository.UserLoanHistoryRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration, could not be registered. A bean with that name has already been defined in com.group.libraryapp.prac2.domain.user.loanhistory.UserLoanHistoryRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration and overriding is disabled.
사용 프로그램 & 버젼, filePath 등 환경
java11
springboot 2.7
spring-data-jpa
발생날짜
December 3, 2023
상황
코드 연습용 모듈에 반복적인 클래스 생성으로 빈 충돌한 상황
에러 원인
같은 이름 다른 패키지경로의 클래스들 때문에 빈생성 등록할 때 충돌남
해결 방법
extends JpaRepository하면 굳이 @Repository에서 빈등록 안해도 자동으로 빈등록을 해주며 이렇게 빈등록된 게 다른 곳에서 중복된 빈이름과 충돌한 것
코드
public interface BookRepository extends JpaRepository<Book, Long> {
84번째 라인 ${ bdelete } 태그가 73번째 라인 var=”bdelete”를 가져다 쓰는거고 bdelete의 value속성은 url을 담고있음
삭제하기 버튼을 누르면 84번째 라인 ${ bdelete } 가 실행되고 var=”bdelete”가 호출되고 var=”bdelete”와 이어져있는 url인 bdelete.bo가 연결된 콘트롤러로 연결됨.
이때 74번째 라인 <c:param> 안에 pk역할을 하는 name=”bId”를 콘트롤러에서 데이터를 받게되면 ${ board.boardId } 를 받는데 db의 boardId 컬럼은 게시글 번호이므로 1,2,3,4 이런식으로 int값이 최종적으로 컨트롤러에 들어가게된다
삭제하기 버튼 누르면 bdelete쪽으로 넘길 때
<c:param name="bId" value="${ board.boardId }"/> 이부분을 가지고 넘김
@RequestMapping("bdelete.bo")
public String deleteBoard(@RequestParam("bId") int bId,
@RequestParam("renameFileName") String renameFileName, HttpServletRequest request) {
// boardDetailView
// 어디서 접근해서 삭제할지도 지정해야하니 HttpServletRequest도 추가
if(!renameFileName.equals("")) { // renameFileName이 비어있지 않다면
deleteFile(renameFileName, request); // renameFileName을 넘겨준다, 어디서 삭제할 것인가:request
}
int result = bService.deleteBoard(bId);