실행을 할 때마다 아래와 같은 에러 메세지가 발생했다. application.properties 의 설정은 다음과 같았다.spring.jpa.hibernate.ddl-auto=update 2025-04-06T23:16:30.934+09:00 WARN 27868 --- [ReadingLogBackend] [ main] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL " alter table if exists user alter column user_uuid set data type varchar(255..
DB 사용에 앞서 먼저 해당 DB를 사용할 계정을 따로 생성해주려고 한다. 우선 로컬 DB 에서 개발을 진행하고 나중에 서버 DB에서 합치기로 했기 때문이다. postgresql 에서 설정을 동일하게 유지하기 위해 새로 생성한다. pgAdmin4 계정 생성하기1. Server > Database > Login/Group Roles 우클릭 Create > Login/Group Role ... 2. 사용할 계정명을 입력하고 저장한다. 3. Definition > password 설정해줘야 IntelliJ 에서 로그인이 가능하다. 4. Privileges 는 아래와 같이 설정하였다. 다른 DB를 생성할 필요는 없기에 필요없는 권한들은 제거했다. Postgresql, IntelliJ 연결나는 DB ..
Lock wait timeout exceeded 오류가 계속 발생했다. 이전의 경험으로 해당 오류는 한 스크립트에서 커밋을 하지 않고 다른 스크립트에서 작업 시 발생했었다. 그런데 이번에는 그런 것도 아니었다. 그래서 다른 작업자에게 DB 데이터 수정하고 있는지 확인했는데, 아니라고 했다. 에러 해결하기아래 쿼리문으로 현재 lock 이 걸린 테이블이 뭔지 조회해봤다. 그런데 아무것도 나타나지 않았다. 서치 후 확인해보니, 실제 문제가 발생한 프로그램을 실행중일 때 아래 쿼리문으로 조회가 가능한 것이었다. SELECT * FROM information_schema.INNODB_LOCK_WAITSSELECT * FROM information_schema.innodb_locks; INNODB_LOCK_W..
프로시저를 사용한 프로젝트의 유지보수를 1년 가까이 진행하고 있다. 개인적으로 느끼는 프로시저의 장점과 단점을 정리해 보겠다. 경험을 기억하기 위해 기록하는 것이니 참고 바란다. 내가 작성한 프로시저는 아니기에, 프로시저 구현 방법에 따라 장점과 단점이 달라질 수 있음을 유의해주길 바란다. CS 적인 측면에서의 장점은 말할 수 없다 ..모르니까! 참여한 프로젝트의 전체적인 개요는 .. 자바는 프론트와 프로시저의 연결고리로만 사용되어있고 체감 99% 프로시저로만 기능이 구현되어 있다. 예로, 화면에서 조회, 수정 등을 해야할 경우 따로 판매 추가 등의 모듈화가 되어있는 것이 아닌, 조회 기능의 프로시저. 수정 기능의 프로시저 이런식으로 구현이 되어있다.갓 경력이 1년 지난 주니어 개발자라 뭐가 맞는지는 모..
UNION 개념개념은 아래 글을 참고하면 된다.https://skylarcoding.tistory.com/170 [SQL] UNION vs UNION ALLUNION / UNION ALL 여러개의 쿼리문을 이용하여 데이터를 하나로 출력할 때 사용한다. UNION 중복값을 제거하고 보여준다. UNION ALL 중복값을 제거하지 않고 전부 보여준다. 중복값의 기준은 ? 2개의 컬skylarcoding.tistory.com UNION 과 UNION ALL의 차이UNION 은 중복값을 제거하고 보여주고, UNION ALL 은 중복값을 제거하지 않고 보여준다. UNION 사용 예시UNION 사용 시 주의점SELECT 문에 입력한 컬럼의 개수가 UNION 하려는 컬럼의 개수와 일치해야 한다. 사용 방법UNION..
아래 나의 경우 입력시간에 따른 금액의 누적 합계를 출력해야 했다. SUM(합계할 값) OVER (ORDER BY 누적 기준) AS 컬럼명 사용 시 유의할 점은, 누적 기준이 같은 값일 경우 모든 값의 합만 나온다. 뿐만 아니라, order by 기준에 따라 원하지 않는 값으로 나올 수 있으니 전체 데이터의 order by 와 일치 시키는게 좋을 것 같다. order by 는 ','를 이용해 여러개 입력할 수 있다.
테이블 구조 + 데이터 복사아래와 같이 작성하면 새테이블명의 새로운 테이블이 생성되고, 새테이블이 기존테이블의 데이터와 컬럼으로 채워진다.create table 새테이블명 (select * from 기존테이블명) 테이블 구조 복사CREATE TABLE 새테이블 LIKE 기존테이블 테이블 데이터 복사INSERT INTO 새테이블 (SELECT * FROM 기존테이블)
권한을 부여하는 것은 관리자 계정의 콘솔 창에서 진행해도 무방하다.단, 관리자 계정이 다른 계정을 생성할 권한이 있어야 한다. 어디까지 허용할지 권한 주는 것도 허용되어 있어야 한다. 확인계정 관리자 권한 확인show databases;select * from mysql.user; 자세한 권한 확인show grants for '계정명'@'호스트이름' 계정 생성계정 생성CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY '비밀번호'; 계정 권한 부여 GRANT SELECT ON `my_database`.* TO 'readonly_user'@'localhost'; // my_database 에만 조회 권한 부여GRANT SELECT ON *.* TO 'rea..
CTE란?CTE 는 공통 테이블 표현식으로 SQL 에서 쿼리를 작성할 때 사용되는 일종의 임시 테이블이다.주로 복잡한 쿼리를 더 간단하고 가독성이 좋게 작성하기 위해 사용된다. WITH 테이블 AS ( 테이블을 사용할 쿼리문); WITH 멤버 AS ( SELECT NAME FROM MEMBER )SELECT * FROM 멤버
PostgreSQL 에는 NVL 이 없다. COALESCE 사용NVL 이나 IFNULL 대신 COALESCE 를 사용하면 된다.SELECT coalesce(profile_img,'nothing')FROM member프로필 이미지가 전부 없어서 nothing 으로 나옴 ㅎㅎ.. Redundant code in COALESCE call 발생 경우컬럼이 Not null 은 아닌지 확인해보자. not null 일 경우, null 이 절대 발생하지 않아 두번째 값으로 대체 될 일이 없다.