본문 바로가기
MySQL

[MySQL] SQL Error 1364 데이터베이스 에러

by Rapil 2023. 8. 11.

스프링 실행 중 데이터베이스 오류가 발생했다!

오류는 SQL Error: 1364

데이터베이스에서 발생하는 에러로 새 데이터를 삽입하거나 업데이트할 때, 컬럼에 기본 값을 설정하지 않았는데 해당 컬럼에 데이터가 없는 경우 발생합니다

 

아래는 해당 오류를 수정하기 위한 방법입니다

 


Point

컬럼 기본값 확인

데이터베이스 초기화


컬럼 기본값 확인

 

컬럼 중 기본값이 어떤 식으로 되어있는지 확인은 방법입니다.

SHOW CREATE TABLE [테이블명];

// 예
SHOW CREATE TABLE prac;

명령어를 실행하면 테이블의 정보가 나옵니다

여기서 기본값에 이상이 있는 경우 수정해주시면 됩니다.

 


데이터베이스 초기화

 

사실 제일 간단하면서 강력한 방법입니다.

저같은 경우는 yaml에서  ddl-auto 설정을 변경하여 초기화해주는 방법을 선택합니다.

jpa:
  hibernate:
    ddl-auto: none
  show-sql: true

 

여기서 ddl-auto의 설정을 변경해주면 데이터베이스 스키마 생성, 변경, 삭제 등 옵션을 설정하는 프로퍼티입니다.

 

none : 데이터베이스 스키마에 아무런 변경을 하지 않습니다.

update : 엔티티 클래스의 변경 사항을 감지하고, 데이터베이스 스키마를 업데이트합니다. 기본 테이블의 컬럼 수정 및 추가 등이 가능하지만 테이블 삭제나 기존 컬럼의 삭제는 지원하지 않습니다.

create : 엔티티 클래스를 기반으로 데이터베이스 스키마를 생성합니다. 이미 존재하는 테이블이나 데이터는 삭제되므로 주의해야 합니다.

create-drop : 엔티티 클래스를 기반으로 데이터베이스 스키마를 생성하고, 애플리케이션 종료 시에 스키마를 삭제합니다.

validate : 엔티티 클래스와 데이터베이스 스키마를 비교하여 일치하지 않을 경우 경고를 출력합니다. 실제 스키마 변경은 하지 않습니다.

 

이 설정을 변경하여 데이터베이스를 초기화 합니다.

제가 데이터베이스를 초기화할 때 사용하는 순서가 있습니다!

none -> create-drop -> create 

기본 none으로 설정되어 있다면 create-drop으로 설정을 변경 한 뒤에 애플리케이션을 실행 후 종료해 줍니다.

이때, 종료되면 데이터베이스는 스키마를 삭제합니다.

그다음 create로 데이터베이스를 생성해 주면 깔끔하게 처리가 가능합니다!

 


 

데이터베이스를 스키마로 작성한 경우

 

데이터베이스에서 스키마로 직접 작성 한 경우 변경 사항은 영구적으로 적용되며, 초기화 후에도 스키마로 작성된 컬럼은 남아있습니다.

스키마는 데이터베이스의 구조를 정의하는 데 사용되며, 테이블, 컬럼, 제약조건 등의 요소를 포함합니다. 데이터베이스 초기화나 데이터 삭제 작업은 스키마 자체를 변경하지 않습니다.

 

저는 데이터베이스에서 추가해야 하는 경우가 있어 스키마로 추가 작업을 하였는데, 이걸 기억 못 하고 데이터베이스 오류가 생긴 겁니다.

이럴 때는 MySQL로 데이터베이스를 수정해 주시면 됩니다.

 

수정하는 방법은 아래 글을 확인해 보면 도움이 될 것입니다.

 

https://rapil.tistory.com/7

 

[MySQL] 컬럼 추가, 컬럼 삭제, 컬럼명 변경, 컬럼 타입 변경

오늘은 MySQL에서 컬럼을 수정해야 할 경우를 위해 컬럼을 추가, 삭제, 변경, 타입 변경을 알아보도록 하겠습니다! Point 컬럼 추가 및 삭제 컬럼명 변경 컬럼 타입 변경 컬럼 추가 컬럼을 추가하기

rapil.tistory.com