오늘은 MariaDB를 백업하는 과정에서 나타나는 mysqldump error Authentication plugin 'client_ed25519' 해결 방법에 대해 포스팅 하려고 합니다. client_ed25519에러는 DB backup 이외에도 MariaDB와 인증하는 모든 부분에서 나타나는 부분이기 때문에 해당 포스팅은 해당 인증에 대한 공통적인 이슈라고 보시면 됩니다. 먼저 일반적으로 MySQL과 MariaDB는 그동안 저를 포함해서 거의 큰 차이 없이 사용하는분들이 많았을텐데, 각 DB의 버전이 올라가면서 점차 차이가 나타나게 되었습니다. 구체적인 차이가 궁금하신 분들은 아래 링크를 통해 확인하실 수 있습니다. https://aws.amazon.com/ko/compare/the-differenc..
Develope/DataBase
오늘은 MySQL 실행된 Query log확인 및 추적하는 방법에 대해 포스팅 하려고 합니다. Query log에 쌓이는 데이터들은 DB 툴 또는 OS에 설치된 DB Script 또는 JDBC 드라이버등을 이용한 모든 실행가능한 DDL 및 DML 등의 실행한 내용들입니다. 일반적으로는 쿼리를 통한 성공 실패여부에 대해서는 log 또는 쿼리실행 결과문에서 바로 보여지는 부분이지만 어떤시간에 얼마나 어떤 Query들이 사용됐는지 보기 위해서는 log를 확인해야합니다. MySQL의 실행된 Query log확인 방법은 다음과 같습니다. 1. show variables like 'general%'; 명령어 실행 해당 명령어는 Query 입력창에 실행하며 아래 그림과 같이 general_log에 value 값이 O..
오늘은 Postgresql에서 Join query를 Update하는 방법에 대해서 포스팅 하려고 합니다. 단순하게 query문을 join 하거나 단일 table의 데이터를 update 하는것은 간단하지만 join해서 조회된 데이터를 update하는것은 저도 고민을 하다가 했기 때문에 글을 작성하게 되었습니다. 간단하게 아래 예제를 먼저 보도록 하겠습니다. UPDATE ANIMAL_INS AS AIN SET DATETIME = now() FROM AINMAL_OUTS AS AOUT WHERE AOUT.NAME IS NULL AND AIN.NAME IS NOT NULL AND AIN.ANIMAL_ID = AOUT.ANIMAL_ID update 와 set 구문까지는 일반적으로 사용하는 query 이지만 추가적..
오늘은 Postgresql table column 정보 조회 방법에 대해 포스팅 하려고 합니다. table column은 간혹 column에 대한 size 또는 data_type를 확인하고 싶을때 자주 사용합니다. DataBase tool이 있다면, 명령어를 확인하지 않고 간단하게 확인할 수 있지만, tool을 사용하지 못하는 TUI 환경 또는 Linux 환경에서는 DataBase query를 통해 확인해야 하기 때문에, 아래 내용과 같이 실행을 하면 정보를 확인 할 수 있습니다. column_name(컬럼 이름), data_type(컬럼 타입), character_maximum_length(컬럼 길이) 이외에도 많은 정보들이 들어 있는데, 확인 하고 싶으시면 select 에 * 로 확인하시면 됩니다. ..
오늘은 Postgresql DB의 value too long for type character varying 이슈에 대한 해결 방법에 대해 포스팅 하려고 합니다. value too long for type character varying 오류가 나타나는 현상은 database에 특정 값들을 insert 또는 update하려고 할 때 나타납니다. 예를 들어, 특정 값에 대한 column의 max 길이가 10자리인데 실제 insert 또는 update 하려는 값의 길이가 11자리 이상일때 나타난다고 보시면 됩니다. 이 문제를 해결하기 위해서는 일반적으로 database의 column의 길이를 늘려주면 됩니다. 저는 Postgresql로 변경하도록 하겠습니다. database마다 명령어는 조금씩 다를 수 있기..
오늘은 Postgresql DB의 전체가 아닌 특정 테이블만 백업 및 복구 하는 방법에 대해 쉽고 간단하게 포스팅 하려고 합니다. 리눅스(Linux) 서버에서 pg_dump를 이용하여 Postgresql DB의 특정 테이블을 백업합니다. # /usr/bin/pg_dump -d [데이터베이스 명] -t [테이블 명] > [백업 경로 및 백업파일 이름].sql # /usr/bin/pg_dump -d testDB -t user_info> /var/lib/pgsql/9.6/backups/testDB_userinfo.sql pg_dump를 이용하여 백업한 sql을 복구합니다. 복구시에는 DB권한을 가지고 있는 계정으로 변경하여 실행해야 합니다. # psql -f [백업파일 이름].sql [복구할 데이터베이스 명]..
오늘은 Postgresql DB에서 사용자 추가 및 Role 권한 관리에 대해 포스팅 하려고 합니다. 1. DB 계정 및 Role 권한 확인 먼저 Linux에서 posgresql DB에 접근합니다. # sudo -u postgres psql postgres \du 명령어를 사용하여 현재 Postgresql DB의 계정 및 Role 권한 정보를 확인합니다. postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- clovir | Superuser | {} postgres | Superuser, Cre..
오늘은 ERROR: column reference "column_name" is ambiguous 오류 및 해결 방법에 대한 포스팅을 하려고 합니다. 해당 오류는 A와 B의 테이블을 조인 했을 때 해당 컬럼이 양쪽에 존재하고 어떤 테이블의 컬럼인지 명시가 되어있지 않아서 발생하는 오류입니다. 예를 들어보면 아래 내용과 같은 쿼리를 실행 했을 때 ERROR: column reference "tablename" is ambiguous 라는 오류가 나타나게 됩니다. where 조건에서 tablename이 어느 테이블의 컬럼인지 명시 해주어야 합니다. a.tablename 또는 b.tablename으로 바꿔주시면 해결 됩니다. select a.tablename from a_table a join b_table ..