#해당 문제는 MYSQL, MariaDB에서만 발생한다 Emoji같은 글자를 표현하기 위해서는 글자당 최대 4bytes가 필요한데 MYSQL에서 utf8필드는 최대 3bytes를 지원하기 때문에 Emoji표현에 한계가 있다 (문자가 깨져서 저장 된다) 최근 들어 Emoji사용이 증가하고 보편화 되었기 때문에 DB서버의 환경변수, 테이블 스킴을 utf8mb4로 변경하는게 좋다. 😂😊🤣❤😍😒👌😘👍👍👍🙏🤞👏 DB character set 확인하기 show variables like 'character%'; 두 설정 값은 utf8mb4로 변경 할 필요가 없다 character_set_filesystem = binary character_set_system = utf8 character set이 설정이 안되어 있..
MySQL의 기본적인 구조을 알아보기로 했다 처음 설치했을 때 table을 검색해보면 생성하지 않은 테이블들이 생성되어 있다 MySQL 시스템에서 설정 관련해서 사용되는 DB라서 지금까지는 크게 신경을 안쓰고 lock이 걸렸을 때 문제가 있을 때 잠깐 확인 했었던게 전부였다 1.information_schema DB의 메타데이터를 보관하는 스키마다 데이터베이스, 테이블, 칼럼타입, 접근권한 등 데이터베이스의 정의를 확인 할 수 있다 data dictionary, system catalog 정보를 확인 할 수 있다 dev.mysql.com/doc/refman/8.0/en/information-schema-introduction.html 2.mysql 시스템 데이터베이스로 mysql 서버가 운영될 때 필요한..
작업중에 PK, auto_increment 속성을가진 컬럼을 제거 해달라고 한다 .. oracle에서는 SEQUENCE를 삭제하면 되지만 속성만 지우는 방법을 몰라서 mysql에서 삭제를 하려고하니 pk는 지울 수 없고 auto_increment를 제거해달라고 경고창이 뜬다 구글링 결과 alter table [테이블명] drop primary key, change [필드명] [필드명] [데이터타입(길이)] not null; 결과적으로 alter문으로 속성을 변경 해주면 되는것... #Auto_increment 초기화방법 alter table [테이블명] auto_increment=1; set @count =0; update [테이블명] set [필드명] = @count:=@count+1; 첫번째 라인은 ..
1.foreign key 추가 alter table [추가할테이블명] add constraint [제약조건명] foreign key(컬럼명) references [부모테이블명] (PK컬럼명) [ON DELETE CASCADE / ON UPDATE CASECADE]; ON DELETE CASCADE 외래 키에서 참조하는 키가 포함된 행을 삭제하려고 하면 해당 외래 키가 포함되어 있는 모든 행도 삭제 ON UPDATE CASCADE 외래 키에서 참조하는 키 값이 포함된 행에서 키 값을 업데이트 하면 해당 외래 키를 구성하는 모든 값도 키에 지정된 새 값으로 업데이트되도록 지정 2. foreign key 삭제 alter table [테이블명] drop foreign key [제약조건명]; 3. foreign ..
MySQL은 오류가 발생할 경우 직접 오류를 처리하는 방법을 제공한다. 형식은 다음과 같다. DECLARE 액션 HANDLER FOR 오류조건 처리할문장; 액션 : CONTINUE - [처리할문장] 부분이 처리됨 / EXIT - 프로시저 종료 오류 조건 : 어떤 오류를 설정할 것인지 지정. 처리할 문장 : 처리할 문장이 여러개라면 BEGIN~END로 묶을 수 있다. 조건 핸들러의 각 형식의 자세한 설명을 알고 싶다면 아래 링크를 참고한다. ▷ https://www.ibm.com/support/knowledgecenter/ko/SSEPGG_9.1.0/com.ibm.db2.udb.apdv.sql.doc/doc/c0009027.htm 오류조건과 같은 오류가 발생하면 액션에 따라 처리할 문장이 실행된다. 만약 ..