DB 60

[SQLite] 자동 증가형 컬럼 선언하기

개요SQLite에서 자동 증가 정수형(integer) 컬럼을 선언하는 방법을 알아 보겠습니다.AUTOINCREMENT 컬럼자동 증가되는 컬럼을 선언하기 위해서는 "AUTOINCREMENT" 예약어를 INTEGER 컬럼 선언부에 추가합니다. "AUTOINCREMENT" 예약어를 추가하기 위해서는 해당 컬림이 "PRIMARY KEY" 어어야 합니다.CREATE TABLE IF NOT EXISTS "EMPLOYEES" ( employee_no INTEGER PRIMARY KEY AUTOINCREMENT, employee_name TEXT, employee_email TEXT UNIQUE, department TEXT); 자동 증가되는 컬럼을 선언할 때는 그냥 관용적으로 "INTEGER P..

DB 2024.05.30

[SQLite] 특정 컬럼에 동일 데이터가 없을 경우에만 삽입하기

개요SQLite에서 특정 컬럼에 저장된 데이터가 없을 경우에만 삽입하는 방법을 알아보겠습니다.INSERT OR IGNORE"name" 컬럼에 UNIQUE 제약 조건이 설정되어 있다면, 다음과 같이 "INSERT" 대신에 "INSERT OR IGNORE"로 실행하면 "name" 컬럼 데이터가 있는지 확인하여 이미 존재하는 경우 "UNIQUE KEY" 오류가 발생하지 않고 무시하게 됩니다. 물론 새로운 "name"이면 정상적으로 삽입됩니다.INSERT OR IGNORE INTO table_name (name, other_column1, other_column2)VALUES ('John Doe', 'value1', 'value2'); 이 방법은 특정 컬럼에 UNIQUE 제약 조건이 있을 때 유용합니다.INSE..

DB 2024.05.29

[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] 특정 계정의 Host를 변경할 때, View 관련 오류 발생 문제

문제점 및 증상특정 계정의 Host를 변경할 때 다음과 같이 View 관련 오류가 발생하였습니다.MariaDB [mysql]> update user set Host = '172.16.10.%' where Host = '%' and User = 'root';ERROR 1356 (HY000): View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them이 문제에 대한 해결 방법일 정리해 둡니다.해결방안MariaDB-10.4+ 이후부터 mysql.user 가 테이블이 아니라 VIEW로 변경되었습니다.따라서 직접적으로 INSERT, UPDATE가 안되..

DB/MySQL 2022.11.25

[MariaDB] 테이블 및 인덱스 용량 확인

개요MariaDB에서 간단한 쿼리를 이용하여 테이블 및 인덱스 용량 확인하는 방법을 알아 보겠습니다.테이블별 용량 확인다음과 같은 쿼리를 이용하여 접근 권한이 모든 데이터베이스에 대한 테이블에 대한 용량을 확인할 수 있습니다.SELECT table_schema as `DB` , table_name AS `Table Name` , ROUND(((data_length) / 1024 / 1024), 2) `Table Size (MB)` , ROUN..

DB/MySQL 2022.10.12

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