DB 57

pg_dump: too many command-line arguments (first is "arg")

PostgreSQL DB를 이용하다가 운영하고 있는 DB의 특정 테이블 데이터를 백업 받기 위하여 다음과 같이 실행하였더니, 아래와 같이 "too many command-line arguments" 오류가 발생하였습니다. # pg_dump -U postgres -W "password" -d postgresqlServer -t missing_data > missing_data.sql pg_dump: too many command-line arguments (first is "password") Try "pg_dump --help" for more information. 알고 보면 엄청 단순한 문제였습니다. "-W" 옵션을 잘못 알고 사용한 것인데, "-W" 옵션을 "-U"로 지정한 계정의 비밀번호를 입력하..

DB/PostgreSQL 2020.12.16

테이블의 모든 컬럼명을 대문자/소문자로 변경하기

개발 유지보수 중에 특이하게도 테이블의 모든 컬럼명을 대문자로 작성한 데이터베이스로 작업된 소스를 수정할 일이 있었는데, DB 유지관리를 위하여 명명 규칙에 맞도록 테이블의 컬럼명을 모두 소문자로 변경하는 작업을 해야만 했습니다. 테이블을 SQL로 모두 백업 받은 후에, 컬럼명을 일일이 찾아 소문자로 변경하는 것은 엄두가 나지 않아서 손쉽게 할 수 있는 방법을 찾아 보았더니, 간단하게 다음과 같은 쿼리문을 활용하여 테이블의 컬럼명을 일괄 대문자 (UPPER) 또는 소문자 (LOWER)로 변경할 수 있었습니다. SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CHANGE `', COLUMN_NAME, '` `', UPPER(COLUMN_NAME), '` ', COLUMN_TY..

DB/MySQL 2020.11.23

[MariaDB/Mysql] 중복되지 않은 데이터 입력하기

개요 특정 테이블에 레코드 입력시, 중복되지 않은 레코드만 입력하고자 하는 경우가 종종 있습니다. 본 문서에서는 MariaDB/Mysql 에서 테이블 내의 데이터와 중복되지 않은 레코드를 입력하는 두 가지 방법에 대하여 살펴 보도록 하겠습니다. 중복되지 않은 데이터 입력하기 특정 테이블에 중복되지 않도록 데이터를 입력하는 방법은 유일키(UNIQUE KEY or PK)가 존재할 경우와 그렇지 않은 경우에 대하여 처리하는 방법이 달라집니다. UNIQUE KEY가 존재하지 않는 경우 중복을 허용하지 않는 PRIMARY KEY 또는 UNIQUE KEY가 없는 경우에는 다음과 같이 "INSERT ... SELECT ..." 구문을 이용하여 중복 방지된 데이터 입력을 구현할 수 있습니다. CREATE TABLE I..

DB/MySQL 2020.03.17

[MariaDB/MySQL] 1월 30일의 1개월 후는 어떻게 계산할까?

만료기간 관련된 작업을 하던 중에 올해 윤달도 있고 해서, 1월 30일의 1달 후는 몇일일지 궁금해졌습니다. 그래서 다음과 같은 쿼리를 작성하여 실행해 보았습니다. \ MariaDB [(none)]> SELECT DATE_ADD('2020-01-30', INTERVAL 30 DAY), DATE_ADD('2020-01-31', INTERVAL 30 DAY), DATE_ADD('2020-01-30', INTERVAL 1 MONTH), DATE_ADD('2020-01-31', INTERVAL 1 MONTH); +-----------------------------------------+--------------------------------------..

DB/MySQL 2020.02.07

[MariaDB/MySQL] 저장 프로시저 DEFINER 일괄 변경하는 세 가지 방법

개요MariaDB를 이용하여 프로젝트를 진행하던 중에, 개발하던 DB를 그대로 실 운영서버로 백업하고 복구하여 사용하려고 하는데, 저장 프로시저의 DEFINER 때문에 호출 오류가 발생하였습니다.데이터베이스 오류 Error Number: 1449 The user specified as a definer ('root'@'172.16.112.%') does not exist CALL USP_get_common() 저장 프로시저를 백업 받아서 DEFINER를 변경한 후에, 다시 정의하면 해당 저장 프로시저는 바로 이용할 수 있었으나, 이전한 데이터베이스에 저장 프로시저가 100개가 넘는 터라 일일이 DEFINER를 바꾸어 주는 것은 너무 고된 작업이라 일괄로 한꺼번에 처리할 수 있는 방법은 없는지 알아보고, ..

DB/MySQL 2020.01.30

[MariaDB/MySQL] 서비스가 시작되자 마자 종료되는 문제

문제점 및 증상MariaDB의 데이터 폴더를 그대로 복사하여, 새로운 서버에서 구동하려고 했으나 다음과 같은 로그와 함께 MariaDB 서비스가 정상적으로 실행되지 않았습니다.systemctl start mariadb Job for mariadb.service failed because a timeout was exceeded. See "systemctl status mariadb.service" and "journalctl -xe" for details. systemctl status mariadb mariadb.service - MariaDB 10.3.12 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled;..

DB/MySQL 2020.01.17

MaraiDB의 Data 저장 폴더 변경하기

시험 환경 : CentOS 7.4 / MariaDB 10.3.12MaraiDB 데이터 폴더를 변경하기 위하여 서비스를 중지합니다.$ systemctl stop mysql 이동할 폴더를 생성하고, 다음과 같이 "rsync" 명령어를 이용하여 모든 데이터 파일을 복사합니다.$ mkdir -p /home/mariadb/mysql $ rsync -av /var/lib/mysql /home/mariadb/mysql "server.cnf" 파일에서 "datadir"에 변경된 데이터 폴더를 아래와 같이 설정합니다.$ vim /etc/my.cnf.d/server.cnf [mariadb] datadir=/home/mariadb/mysql 기본적으로 CentOS의 MaraiDB는 "/home", "/root" 등의 폴더에..

DB/MySQL 2019.09.07

MariaDB 서비스 포트 변경 (CentOS 7)

MaraiDB 서버의 서비스 포트를 변경하려면, 먼저 SELinux 활성화 여부를 확인합니다.$ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 위와 같이 "sestatus" 명령을 실행하였을 때, "SELinux status"가 "enabled"된 상태라..

DB/MySQL 2019.07.16

[MariaDB] NULL 허용 컬럼 사용시 고려할 점

NULL 허용 숫자 자료형 컬럼에 COUNT, AVG 등의 함수를 사용할 경우, 매우 주의를 기울여야 합니다. 다음과 같이 테이블을 생성하고, 자료를 입력한 후에, COUNT, AVG 함수를 이용하여 자료를 조회한 결과를 보면, 결과에 약간씩 차이가 있습니다.CREATE TABLE `ORDER_DEPT` ( `dept_no` INT NOT NULL COMMENT '부서 번호' , `order_count` INT NULL DEFAULT NULL COMMENT '주문 수량' , `status` CHAR(1) NULL DEFAULT NULL COMMENT '상태정보, C:완료, O:진행중' ) COMMENT='부서별 주문정보' COLLATE='utf8_general_ci' ENGINE=InnoDB; INSER..

DB/MySQL 2018.11.08

[MariaDB] VARBINARY 형 비밀번호 처리에 관하여

문제점 및 증상비밀번호 사용을 위하여 내장된 password() 함수를 이용하다가, 보안 강화를 위하여 sha2-256을 적용실제 비밀번호를 아무런 암호화 없이 HTTP를 통하여 주고 받기 보다는 클라이언트에서 비밀번호 자체를 sha2-256을 적용한 해쉬값을 전달하여 처리하는 방식으로 개선하는 도중에 클라이언트에서 받은 해쉬값을 MariaDB의 해쉬값과 비교하는 과정에서 비밀번호가 일치하지 않는 문제 발생사용자 테이블 CREATE TABLE `customer` ( `customer_seq` INT(11) NOT NULL AUTO_INCREMENT COMMENT '고객번호', `login_id` VARCHAR(200) NOT NULL COMMENT '아이디' COLLATE 'utf8_unicode_ci'..

DB/MySQL 2016.09.07
728x90