DB/MySQL 5

[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