DB 3

mariaDB sql문 초보가 저지르는 실수 (foreign key)

수업에서 데이베이터베이스 시스템 3판 교재를 사용한다. 교재에 나온 형식이랑 똑같이 mariadb client에 입력했더니 이런 에러가 뜬다. 당황스럽다. 아무리 검색을 해봐도 charset이 잘못됐거나 reference 당하는 테이블에서 primary key로 설정 안 해 놨거나 데이터 타입이 다르다는 말 뿐이다. charset은 건드리지 않았으니 서로 다를 일은 없을 테고 desc 테이블명으로 확인해봐도 primary key로 설정돼있고 데이터 타입도 integer만 썼다. int는 쓰지도 않았다. 원인을 알 수 없어 여러 경우의 수에 대해 테스트 해봤다. 그 결과 해답을 찾을 수 있었다. references에서 attribute 명을 명시해줘야만 한다. 교재가 너무 옛날에 나와서 최신 mariadb..

DB 2021.10.25

데이터베이스 이모지 관련 에러 해결 - Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,COERCIBLE) for operation '=' 에러가 aws RDS에서 발생했을 때 해결

mysql 공식문서에 따르면 collation 디폴트 값은 utf8mb4_0900_ai_ci입니다. The default MySQL server character set and collation are utf8mb4 and utf8mb4_0900_ai_ci 필자는 아래와 같은 과정으로 aws RDS에 mysql DB을 올려놨습니다. mysql 워크벤치를 통해 ERD을 만들고 forward를 통해 로컬 db와 동기화를 시켜줬습니다. 그 다음 sequelize-cli의 seed 명령어를 통해 데이터를 생성해줬습니다. 서버 내부에서는 sequelize-auto를 사용해서 만들어진 데이터베이스 구조를 사용했습니다. 이 구조에 charset, collate 옵션을 utf8mb4, utf8mb4_general_ci..

DB 2021.08.20

MongoDB를 써보다. 장점과 단점

이번에 시작할 프로젝트에서는 MongoDB를 써보려고 mongoDB 공식 문서를 비롯해 폭풍 구글링 중이다. 기존에 MySql(관계형 데이터베이스)를 썼을 때는 불편한 점이 꽤나 많았다. 테이블을 다 따로 만들어야 하며 일대다(oen to many) 관계를 표현하기 위해 '다(many)'에 해당하는 테이블에서 '일(one)'에 해당하는 테이블을 참조하는 id가 필요했다. mysql workbench를 사용해서 ER diagram을 만들었었는데 익숙하지 않아서인지 가끔 데이터베이스 동기화가 안 되거나 기존에 어렵게 만들어놓은 테이블이 날아가는 일도 있었다. 애초에 sequelize를 사용해서 코드로 모델링 해놓으면 이런 일은 발생하지 않았을 테지만 실제 쇼핑몰이라고 생각하고 데이터베이스를 짰을 때 그 테이..

DB 2021.08.11