DB 56

[MariaDB] "UTF-8" 문자열 자료 입력 시, "Incorrect string value" 오류 발생 문제

문제점 및 증상 유튜브 자료를 분석하여 MariaDB에 입력하는 작업을 진행 중에 다음과 같은 오류를 만나게 되었습니다. File "C:\Dev\Python\Python310\lib\site-packages\mysql\connector\connection_cext.py", line 573, in cmd_query raise get_mysql_exception( mysql.connector.errors.DataError: 1366 (22007): Incorrect string value: '\xF0\x9F\x91\xA8\xE2\x80...' for column `YOUTUBE_DL`.`CLIP`.`title` at row 1 왠만한 자료들은 입력이 잘 되는데, 유독 이모지가 있는 자료에서만 위와 같은 오류..

DB/MySQL 2022.12.27

[MariaDB] "Incorrect definition of table mysql.event" 오류 해결 방법

도커를 이용하여 "MariaDB-10.4.15"를 운영 중이다가 오랜만에 "MariaDB-10.6.4"로 버전을 업그레이드 한 이후에, 로그에 다음과 같은 오류 기록이 남아 있었습니다. # ./start-mariadb.sh ======== [2021-08-22 14:08:32] ./start-mariadb.sh MariaDB 컨테이너 생성 ea3e5e778ec53f5b325420cb23e72c22d912b6e3328fd04151d2e9cc09705b89 [root@hbesthee-60337 www1]# docker logs mariadb 2021-08-22 5:08:34 0 [Note] /usr/bin/mysqld (server 10.6.4-MariaDB-debug) starting as process ..

DB/MySQL 2021.08.22

[MariaDB] Database를 백업하는 방법

개요 데이터베이스를 이용하면, 주기적인 백업은 선택이 아닌 필수적인 일입니다. MaraiDB에서 데이터베이스를 백업 받는 방법에 대하여 정리하여 둡니다. 기본적인 데이터베이스 백업 MaraiDB에서 데이터베이스를 백업을 위하여 "mysqldump" 명령을 이용합니다. 기본적으로 다음과 같이 필요한 데이터베이스에 대한 백업을 수행합니다. $ mysqldump -u dbuser -h 127.0.0.1 -ppassword --port=3306 DATABASE | gzip > DATABASE-20210627_10.sql.gz 각 옵션들에 대한 설명은 다음과 같습니다. -u : 데이터베이스 서버 로그인 계정명을 지정합니다. 위 예에서는 "dbuser" 계정으로 로그인합니다. -h : 데이터베이스 서버의 호스트 주..

DB/MySQL 2021.06.27

[MariaDB] 시간대 (time-zone) 설정하기

현재의 시간대를 확인하는 방법은 다음과 같습니다. MariaDB [(none)]> SELECT @@global.time_zone, @@session.time_zone; +--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | SYSTEM | SYSTEM | +--------------------+---------------------+ 1 row in set (0.000 sec) 위와 같이 시간대가 "SYSTEM"으로 나오면, 기본적으로 "UTC" 시각을 기준으로 설정되어 있음을 나타냅니다. 그러면, 실제 한국시간 보다..

DB/MySQL 2021.04.26

[MaraiaDB] 식별 코드 (serial code) 생성 프로시저 만들기

"AUTO_INCREMENT" 속성을 갖는 일련번호는 중복되지 않아서, 테이블 내부의 Primary key를 만들때 사용하면 좋으나, 이를 API 등에 그대로 사용하면, 악용할 여지가 크기 때문에 각 레코드별로 외부에서 임의로 추측할 수 없는 값을 이용해야만 합니다. GUID() 혹은 UUID()가 좋은 방법이 될 수 있습니다. 외부에서 임의로 추측하여 찾을 수 없다는 장점이 있지만, 너무 길어서 외우는 것은 불가능할 정도고 적어 두기도 불편할 만큼 긴 문자열입니다. 4c302295-a2fe-11eb-8130-fa154e32888f fa154e32-888f-4c30-2295-a2fe11eb7132 그래서 저는 별도의 식별 코드를 위하여 UUID() 함수를 이용하여, 각 레코드별로 고유한 값이 할당되도록 ..

DB/MySQL 2021.04.24

[MaraiaDB] 저장 프로시저 (Stored procedure) 만들기

다음은 MariaDB 공식 문서에서 가져온 저장 프로시저 (Stored procedure) 문법입니다. CREATE [OR REPLACE] [DEFINER = { user | CURRENT_USER | role | CURRENT_ROLE }] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body proc_parameter: [ IN | OUT | INOUT ] param_name type type: Any valid MariaDB data type characteristic: LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MO..

DB/MySQL 2021.04.23

임의의 숫자 데이터 다루기 ; RAND()

MariaDB에서 임의의 숫자를 얻기 위하여 RAND() 혹은 RAND(N) 함수를 이용합니다. RAND() 함수를 호출하면 0과 1사이의 임의의 실수를 반환합니다. 따라서 특정 숫자 사이의 정수를 구하려면 다음과 같이 FLOOR() 함수를 이용해야 합니다. FLOOR(min_value + RAND() * (max_value - min_value + 1)) 5에서 15 사이의 정수를 얻으려면 다음과 같이 호출합니다. SELECT FLOOR(5 + RAND() * 11); RAND(N)에서 N값은 초기화(seed)값으로, 동일한 초기화값을 입력할 경우 동일 임의의 숫자 셋을 순차적으로 얻을 수 있습니다. CREATE TABLE t (i INT); INSERT INTO t VALUES(1),(2),(3); ..

DB/MySQL 2021.04.07

"HeidiSQL"에서 함수(function) 생성 실패 문제

문제점 및 증상 다음과 같은 일반적인 함수를 생성하는 코드를 시험하였습니다. CREATE OR REPLACE FUNCTION test() RETURNS VOID LANGUAGE plpgsql AS $$ begin prepare plan as select 1; EXECUTE 'execute plan'; RAISE NOTICE 'Made it'; DEALLOCATE plan; end; $$; 그러나 "HeidiSQL"에서는 다음과 같은 오류가 발생하며, 함수 생성이 실패하였습니다. 문제는 정상적으로 실행되어 함수가 생성되는 정상적인 코드임에도 "HeidiSQL"에서는 오류가 발생한다는 것입니다. /* ERROR: unterminated dollar-quoted string at or near "$$ begi..

DB/PostgreSQL 2021.04.04

백업(backup) 및 복구(restore)

본 문서에서는 PostgreSQL Database에 대하여 백업(Backup) 및 복구 (Restore) 방법에 대하여 설명합니다. 데이터베이스 백업 : Bakcup pg_dumpall : 전체백업 PostgreSQL Database 전체 백업을 수행하려면, 간단하게 "pg_dumpall" 명령을 이용하면 됩니다. 일반적으로 다음과 같은 형태로 데이터베이스에 대한 전체 백업을 수행합니다. # pg_dumpall -f all-backup.sql -U postgres -W Password: "-f" 또는 "--file" 옵션을 주지 않으면, 백업 스크립트 내용이 표준 출력(standard output)으로 나오게 됩니다. "-U" 옵션은 전체 데이터베이스에 대한 접근 권한을 갖고 있는 "postgres" 계..

DB/PostgreSQL 2020.12.19

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
728x90