# H2

[Test] h2 db (PostgreSQL모드)와 PostgreSQL db로 테스트할 때의 차이점 (부제 : h2 db 테스트시 발생한 lock 오류 해결)
PostgreSQL DB를 배포환경에서 사용중이다. 필자는 통합테스트를 로컬에서 실행할 때, h2 를 postgreSQL모드로 사용한다. jdbc:h2:tcp://localhost/~/develope/test;MODE=PostgreSQL 하지만, 이 때 발생한 문제부터 알아보자. 1. 문제가 되는 테스트 코드 이 테스트 코드의 목적은 회원정보를 수정해야 하는 대분류의 케이스의 일부이다. 사용자가 비밀번호를 잊어버렸을 때, 가입한 이메일정보로 인증 코드를 보내서, 해당 인증 코드와 함께, 비밀번호를 바꿀 수 있게하는 동작을 통합테스트로 실행하였다. 문제가 없어보였다. 하지만 문제는 >org.springframework.dao.QueryTimeoutException: PreparedStatementCallback; SQL [update member.auth as auth set password = ? from member.info as memberInfo where me
[SpringBoot] H2 insert sql script 오류
DB에 샘플데이터를 미리 넣고 시작하려고 data.sql을 작성하였다. 그리고 프로젝트를 재시작하니 다음과 같은 오류가 발생했다. > Error creating bean with name 'dataSourceScriptDatabaseInitializer' ... Table not found 테이블을 찾을 수 없어 insert가 불가능하다고 나온다. 해당 원인은 테이블명이 예약어라 못만들었는데 insert 하려해서 발생하거나, 테이블 생성 전인데 데이터를 insert 하려고 해서이다. 나의 경우는 테이블명이 예약어가 아니었기에 insert 순서보다 테이블을 먼저 생성하게끔 하는 옵션 "defer-datasource-initialization: true" 을 setting 파일에 넣어줬다. 그랬더니 문제를 해결할 수 있었다.

팀 프로젝트 공통 템플릿 만들기 프론트엔드와 백엔드 환경 설정(인텔리제이에 리액트와 스프링부트 연결하기)
1. 인텔리제이에 기본 설정 🧐 프론트앤드(리액트), 백엔드(스프링 부트) 설정방법 일단 스프링 부트로 하나 만들어주기 스프링 부트 안에 리액트 설치 하기 버전 다운그레이드 리액트 16.14 버전으로 맞추기 그 후 문제 해결 > 🔗 https://homubee.tistory.co

팀 프로젝트 시 데이터베이스는 어떻게..? mysql과 h2, jpa와 mybatis
작성하게 된 계기 > 학교에서는 주로.. 개인프로젝트가 많았고 팀 단위 프로젝트를 제대로 하는 것은 처음이었고 대부분의 팀원들이 그랬기 때문에 나 자신이 공부하면서 다른 팀원들한테도 공유할 겸 작성하게 되었다. 1. 의문점 🧐 흠… 우리는 팀프로젝트 작업을 해야하는데 돌아가는 코드는 로컬(내 컴퓨터에서) 톰캣으로 한다고 해도 데이터베이스는 공유해야 하는데 이걸 어떻게 해야할까..? > 팀 프로젝트를 진행할 때 데이터베이스를 어떻게 공유하고 사용하는지에 대한 몇 가지 옵션이 있습니다. 데이터베이스를 공유하려면 팀원들 간에 데이터베이스 접근 권한 및 연결 정보를 공유해야 합니다. 일반적으로 다음과 같은 방법을 사용합니다: **공용 데이터베이스 서버 사용 (온프레미스 또는
Spring Security 3.x.x h2-console enable 에러
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'filterChain' defined in class path resource

[H2 Database] Database "mem:testdb" not found 해결방법
문제상황 스프링부트에서 http://localhost:8080/h2-console H2 데이터베이스 웹 콘솔에 접근하던 중 다음과 같은 오류가 발생하였다. 오류 메세지 현재 application.properties 해결방법 application.properties를 수정 datasource.url 을 `jdbc:h2:mem:t
여러가지 자잘한 프로젝트 에러
예전에 했던 프로젝트를 다시 실행시켜 봤더니 갑자기 구동이 안 되는 것이었다. 프로젝트는 spring boot + h2 + gradle + jpa + node.js + react의 구조. > package org.springframework.boot does not exist import가 되어야 하는 상황에서 뜬금없이 이 메시지가 뜨는 에러는 인텔리제이 자체 에러로, 검색 결과가 꽤 많이 나오는 거 보니 생각보다 자주 발생하는 에러 같다. 해결책: https://jobc.tistory.com/207 이 외에 build.gradle 쪽이 잘못되었을 수 있음. 조치를 취하고 다시 실행해 봤더니 이번에는 프론트엔드 쪽에서 이런 에러가 뜬다. > Unhandled Rejection (TypeError): Failed to fetch 어쨌든 화면이 뜨긴 뜨는데 CRUD 작업을 하면 문제가 생기는 것으로 보아 다시 백엔드 쪽으로. > org.h2.jdbc.JdbcSQLNon
프로젝트(백엔드)

[Kotlin, Spring] 간단한 블로그 애플리케이션 만들기 (1) - 프로젝트 생성
다음 블로그 게시글은 Spring.io Guides의 Building web applications with Spring Boot and Kotlin을 기반으로 작성되었습니다. 새로운 Spring Boot 프로젝트를 생성하는 방법은 다양하다. 여기서는 대표적으로 많이 사용하는 Spring Initializr와 IntelliJ에서 바로 생성할 수 있는 방법 두가지를 살펴보겠다. IntelliJ에서 바로 생성하면 압축 파일을 다운로드 하고 해제하는 과정을 생략할 수 있기 때문에 이 방식을 추천한다. 새로운 프로젝트 생성 1. Spring Initializr 이용(https://start.spring.io/) 
h2 ddl-auto update 에러
개인 프로젝트 진행 중 H2 Database ddl-auto 옵션을 create 에서 update 로 변경하던 중 아래와 같은 에러가 떳다. 엄청 긴 에러코드를 보다 마지막에 Colmun "start_value" not found 라는 오류가 있어 구글링을 해보니 H2 Database가 옛날 버전이라 그런거같다. h2 DB 를 높은 버전을 쓰자니 이것저것 고쳐야해서 위처럼 application.yml 설정파일을 고치니 정상 작동이 되었다. 출처 : [참조 포스트](https://velog.io/@ondj/H2-DB-start

[ Spring Boot ] H2 Database mem:testdb 연결 오류
Spring Boot에서 H2와 JPA를 사용하여 간단한 웹 서비스를 만들 때나 테스트를 할 때 In-memory DB를 사용해야할 경우가 있습니다. 이때 H2의 In-memory 기본값 주소인 jdbc:h2:mem:testdb로 접속하려 하는데 기본으로는 이 주소가 막혀있습니다. 따로 설정해주지 않으면 Spring Boot 애플리케이션을 실행할 때마다 로그에 뜨는 URL로 접속해야하는 번거로움이 있습니다. 위와 같이 생기는 오류를 해결하기 위해서는 Spring Boot가 켜질 때마다 URL을 생성해주는 기능을 끄면 해결됩니다. > ### application.properties > ### application.yml

Unsupported database file version or invalid file header in file
jpa 학습을 위해 h2연결중 다음과 같은 오류가 발생했다. 해결방법1 기존의 2.1.214 버전에서 1.4.200버전으로 다운그레이드후 이전 포트오류를 위해 사용했던 해결방법에서 버전부분만 수정하여 실행하여 해결했다.

H2 port already in use
jpa 학습을 위해 h2를 사용하려고 하는데 ./h2.bat을 입력하니 위와 같은 오류가 발생했다. 해결방법1 cmd를 관리자 권한으로 실행하여 8082 포트 pid를 찾아서 taskkill을 해보았으나 같은 오류가 발생했다. 해결방법2 h2 디렉토리에서 다음과 같이 명령어를 실행하여 문제를 해결했다.
H2 Database 설명, 사용법
H2 Database 설명, 사용법 1. H2 데이터베이스란? H2 데이터베이스는 Java로 작성된 오픈소스 관계형 데이터베이스로, 뛰어난 성능과 작은 메모리크기로 잘 알려져 있습니다. 메모리 내에서 작동하거나 디스크에서 직접 실행할 수 있으며, 서버 모드와 임베디드 모드 둘 다 지원합니다. 주요 특징: 가벼움: 작은 크기로 임베디드 사용에 적합 빠른 속도: 메모리에서 직접 실행되므로 빠른 처리 속도 표준 SQL 지원: JDBC API와 함께 표준 SQL을 지원 웹 콘솔: SQL 쿼리를 테스트하고 결과를 확인할 수 있는 웹 인터페이스 제공 2. H2 데이터베이스 설치 및 설정 Maven 프로젝트에서의 의존성 추가 Gradle 프로젝트에서의 의존성 추가 3. H2 데이터베이스 사용 방법 임베디드 모드로 연결 서버 모드로 연결 SQL 쿼리 실행 예시 4. 웹 콘솔 사용

h2 database 연동 오류 해결
입사 후 처음으로 맡은 프로젝트를 Servlet으로 개발하였었는데 새로운 기능을 추가하게 되면서 Springboot, JPA, H2로 마이그레이션 하게 되었다. Springboot h2는 처음이다보니 연동이 안되는 오류를 겪었다. 해결법 다음과 같은 순서로 진행하면 된다. h2를 설치한 다음. 압축을 풀고 H2/bin/h2.bat 실행. 그러면 다음과 같은 로그인 화면이 나오는데 **여기서부터 순서가 정말 중요하다. ** JDBC URL: DBName은 생성 될 DB파일이름지정 사용자명 : 원하는 사용자 명 지정 비밀번호 : 원하는 비밀번호 지정(생략가능) 여기서 가장 중요한 부분은 Embedded로 하고 연결. 그러면 내 컴퓨터 홈 디렉토리에 아까 지정한 DBName.mv.db파일이 생
Spring Boot (10)
h2 application.yml h2 DB 접근 > http://localhost:8080/h2 Controller에서 String으로 View 반환 익셉션 핸들러 > runtimeException 상속한 오류 클래스 작성 익셉션 핸들러로 오류 클래스를 조작 유효성 검사 시 작성한 에러 던져주기 Req객체(입력값)에 유효성 검사(@Valid) @Valid >: 유효성 검사할 객체에 @Valid * ReqJoinDTO * > ### 참고 https://dev-coco.tistory.com/123 BindException > : @Valid에서 조건에 맞지 않을 시 반환하는 MethodArgume
SpringBoot H2와 JPA 설정
스프링 부트 프로젝트를 진행하면서 H2 데이터베이스와 JPA 설정이 어려워 기록으로 남겨두는 글입니다. 인메모리 방식 TCP 방식(애플리케이션이 종료되어도 데이터가 사라지지 않고 유지되는 방식) TCP 방식은 인메모리 방식으로 한 번 데이터베이스를 생성 후 url을 바꿔서 접속하면 된다. 출처: https://wadekang.tistory.com/27

h2 데이터베이스 초기 설정 및 JPA 자바 버전 설정
h2 db 초기 세션 유지하기 주소창 앞에 ip로 db 서버에 접속이 되지 않을경우 localhost로 변경은 해주지만, 뒤에 세션키는 그대로 유지해야한다. h2 설치폴더 아래 bin 폴더 아래 h2.sh파일을 실행한다. ..../h2/bin/h2.sh 브라우저 콘솔이 실행된다 (나오지 않을경우 ip주소만 !! localhost로 변경하기 ( 뒤에 세션키는 유지해야함 이거때매 개고생) 가장 처음 연결할때는 tcp가 아닌 "jdbc:h2:~/{스키마}" 형식에서 스키마를 수정하여 연결버튼 클릭 -> {스키마}.mv.db 파일 생성됨 이후 프로젝트 JPA 설정의 value값으로 연결하면 된다 자바 설치 경로 확인하기 프로젝트별로 자바