DB 9

[MySQL] ERROR 1833

문제 발생 토이 프로젝트를 진행 하던 중에 DB 어느 테이블의 Primary Key에 auto_increment를 설정하지 않아서 변경하는 과정에서 발생한 오류이다. 원인 에러를 읽어보니 다른 테이블과의 관계를 통해 설정된 foreign key 때문에 해당 컬럼을 변경할 수 없다는 것이다. 해결방안 설정된 foreign key를 잠시 제거하고, 컬럼의 속성을 변경해 주고, 다시 foreign key를 설정해주면 된다. 이때, 다른 세션에서 데이터에 접근할 수 없게 연관된 table들을 LOCK 해준 상태에서 진행해야 한다. 해결과정 먼저, 해결과정에서 찾은 stackoverflow 사이트이다. stackoverflow.com/questions/13606469/cannot-change-column-used..

DB/MySQL 2021.04.09

[MySQL] Delimiter 사용법

우선, 영어로 delimiter는 구분자를 의미한다. 그러므로 MySQL에서는 구분자를 변경하기 위해 delimiter 명령어를 사용한다. mysql에서 구분자를 디폴트로 세미콜론(;)을 문장 구분자로 이용한다. select * from hogu; Each stored program(Trigger나 Procedure을 의미하는 듯 하다.)은 body에 SQL문을 포함할 수 있다. 포함된 SQL문은 세미콜론(;)으로 나뉘어진 여러 문장들로 구성된 복합문 일수도 있다. 만약 delimiter를 재정의하지 않은 예시이다. CREATE PROCEDURE `hogu`() BEGIN declare i int default 1; while i

DB/MySQL 2020.09.16

datetime vs timestamp

mysql document의 말을 인용하면, “MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.)”. TIMESTAMP는 값을 저장할때에는 현재 time_zone의 시간을 UTC로 변경하여 저장하고, 읽어들일 때에는 저장되어 있는 UTC를 현재 time_zone의 시간으로 변경하여 반환한다. 하지만, DATETIME은 변환하는 과정이 없이 현재 timz_zone의 시간을 저장하고, 저장된 시간이 그대로 반환된다. 출..

DB/MySQL 2020.09.07

JDBC 사용 시 자원 반환에 정리

오늘은 JSP/Servlet에서 JDBC를 이용하여 DB와 연동하는 부분의 공부를 했다. 그러다 문득 JDBC를 사용하는 부분을 try~catch문으로 감싸서 사용하고 finally부분에서 사용이 끝난 JDBC의 자원을 반환하게 되는데, 자원의 반환을 하는 부분에서 의문이 생겨서 좀 더 깊게 공부하게 되었고 거기서 배운 내용을 조금이나마 정리해 보려고 한다. 우선, 내가 지금 공부하고 있는 JSP책에서의 해당 코드는 이렇다. finally { if(rs != null) try { rs.close();} catch(SQLException ex) {} if(stmt != null) try { stmt.close();} catch(SQLException ex) {} if(conn != null) try { c..

DB 2020.08.12

[Database 기초] 더티 쓰기(Dirty Write)란?

Dirty Write을 한국말로 직역을 해보자면 '더럽게 쓰기'라고 해석할 수 있을 것이다. '더럽게 쓰기'라는 말 그대로 Database에 저장 되어 있는 데이터가 무분별하게 쓰여지고 쓰여진 과정은 상관없이 마지막에 갱신한 것만이 데이터의 내용에 반영되는 경우이다. 그러면 어떻게 더럽게 쓰여지나 예시를 하나 들어보자. 만약 내가 실수로 똑같은 한글파일을 두 개를 열어 두었다고 가정하자. 그리고 나는 내가 두 개의 한글파일을 열었는지 모르고있다. 나는 그 사실도 모른채 열심히 한글파일의 내용을 수정해 놓고 저장을하고 수정된 한글파일을 종료 하였다. 그 후, 내 동생이 컴퓨터를 사용하기 위해 컴퓨터를 사용하다가 사용 다한 컴퓨터를 종료하기위해 아까 내가 켜두었던 다른 한글파일을 종료하면서 착한 동생은 한글..

DB/Database 기초 2019.07.15

[Database 기초] Mysql world database 다운로드 및 import(source 명령어 사용)

mysql world database가 없어요 라는 질문에 해답을 줄 수 있는 포스팅이 될 것이다. mysql에서 기본적으로 제공해주는 database인 world database가 없는 경우에 import시키는 방법에 대해서 알아보도록 하겠습니다. sql 파일 다운로드 우선 world database를 import 시키기 위해서 sql 파일을 다운로드 받아야 한다. 아래의 링크로 가서 다운로드 해보자. https://dev.mysql.com/doc/index-other.html MySQL :: Other MySQL Documentation Other MySQL Documentation This page provides additional documentation. There's even more ava..

DB/Database 기초 2019.07.11

[Database 기초] 트랜잭션(Transaction)이란?

트랜잭션이란? 복수 쿼리를 한 단위로 묶은 것 트랜잭션의 특성 트랜잭션의 특성을 4가지로 정의 할 수 있는데, 그 앞글자를 따서 ACID특성(Acid는 산이라는 뜻이다) 이라고도 한다. Atomicity(원자성) 트랜잭션의 행동결과(데이터의 갱신)의 여부가 모두 성공하거나 모두 실패하도록 보증해준다. Consistency(일관성) 데이터 조작 전후에 그 상태를 유지하는 것을 보증해준다. Isolation(고립성) 각각의 트랜잭션의 처리가 모순 없이 실행되는 것을 보증해준다. Durability(지속성) 일련의 데이터 조작이 완료가 되면 그 결과를 잃지 않는 것을 보증해준다.

DB/Database 기초 2019.07.07