DB/mysql(mariaDB) 11

Mysql Event Not Working

mysql 이관작업 중 전의 서버에서 작동하던 이벤트가 작동을 안 하는 문제점이 있었습니다. 이는 mysql 버전이 달라 이벤트가 적동하도록 세팅을 해주어야 합니다. SET GLOBAL event_scheduler = ON; 여기서 문제는 변경한 설정값이 mysql을 다시 시작하면 초기화 된다는 것입니다. 이를 해결하기 위해서는 mysql 설정파일을 수정하는 방법을 사용해야 합니다. mysql 설정파일을 엽니다. whereis my.cnf vi 편집기로 설정 파일을 엽니다. [mysqld] 아래에 다음 내용을 넣습니다. event_scheduler = ON 저장하고 mysql을 다시 시작하면 됩니다.

DB/mysql(mariaDB) 2023.01.25

Cannot proceed because system tables used by Event Scheduler were found damaged at server start

mysql에서 이벤트 스케줄러를 만들려고 하는데 위의 에러가 나왔습니다. 해결법을 찾아보았는데 모든 사람들이 아래의 명령어를 치라고 합니다. 이 명령어는 mysql 프로그램을 업데이트 하는 것이 아닌, mysql 테이블을 업데이트 하는 명령어입니다. 이 명령어를 사용하기 위해서는 mysql이 시스템상에 올라와 있어야 합니다.(동작 중 이어야 합니다.) mysql_upgrade --force -u root -p 이 명령어를 치면 mysql 테이블을 업데이트하여 에러를 해결해 줍니다. 이 명령어를 실행하고, restart를 해줍니다.

DB/mysql(mariaDB) 2023.01.25

MySQL 1419 error - "You do not have the SUPER privilege and binary logging is enabled"

이 문제는 트리거 등을 다른 DB로 옮길때 발생한 에러입니다. 이를 해결하기 위해서는 log_bin_trust_function_creators 를 1로 바꾸어주면 됩니다. mysql 에 root 로 접속하여 아래 내용을 쳐주시면 됩니다. set global log_bin_trust_function_creators=1; mysql을 restart 했을 때 설정값이 초기화 되신 분들은 아래 내용을 참조해주세요 2023.01.25 - [DB/mysql(mariaDB)] - Mysql Event Not Working Mysql Event Not Working mysql 이관작업 중 전의 서버에서 작동하던 이벤트가 작동을 안 하는 문제점이 있었습니다. 이는 mysql 버전이 달라 이벤트가 적동하도록 세팅을 해주어..

DB/mysql(mariaDB) 2023.01.18

Mysql Trigger(트리거)

mysql 에는 트리거라는 개념이 있습니다. 이 개념은 어떠한 이벤트가 발생하면 사전에 지정한 행동을 DB가 자동으로 실행해줍니다. 보통 DB에 로그를 남기거나, 백업 데이터를 만들어 두기 위해서 사용합니다. 저는 heidisql을 사용합니다. 테이블 생성처럼 오른쪽 클릭을 사용하시면 됩니다. 생성을 하시면 아래 화면이 나옵니다. 이름 : 트리거 이름 (하이디에서 자동으로 지어줍니다. 그냥 사용하셔도 되고, 바꾸셔도 됩니다.) 정의자 : 트리거를 만든 사람(기본으로 둡니다. 서버에서는 root면 안 됩니다.) 테이블 : 트리거를 실행할 테이블을 선택합니다. 즉, 이벤트가 발생할 테이블을 선택해주시면 됩니다. 이벤트 : 트리거가 발생할 이벤트를 선택합니다. 총 6 가지입니다. after insert 값 삽..

DB/mysql(mariaDB) 2022.06.28

피벗(PIVOT) 테이블

다른 분이 만들어분 SQL에 GROUP_CONCAT()함수가 나와 인터넷에 찾아보니 이는 테이블 피벗을 위한 함수임을 알았습니다. 여기서 피벗이란 '테이블 데이터를 행에서 열로 바꾸는 과정'입니다. 즉, 보통의 테이블은 세로로 데이터가 나오지만 특정한 데이터를 가로로 묶어 보여주기 위한 함수입니다. idx group name 1 1 white 2 1 black 3 2 green 4 2 orange 이처럼 데이터가 있으면 이를 group으로 묶어서 보여주고 싶을 경우 아래 SQL처럼 사용하면 됩니다. SELECT group, GROUP_CONCAT(name) FROM test GROUP BY group 이 결과 아래 테이블이 나옵니다. group name 1 white, black 2 green, oran..

DB/mysql(mariaDB) 2022.06.19

stored procedure(저장 프로시저) 만들기

저번글에서 적었듯 sp(저장 프로시저)는 장점과 단점들이 있습니다. 하지만 빠른 처리속도와 DB의 보안을 간단하게 높여준다는 것에서는 장점이 있습니다. 이번편에서는 저장 프로시저를 어떻게 만들고 실행하는지 알아보겠습니다. DELIMITER $$ CREATE PROCEDURE 프로시저 이름() BEGIN SELECT 뽑을 이름 FROM 사용할 테이블 [where][order by][group by]; END $$ DELIMITER ; 1. 처음에 문단의 마침을 ; 에서 $$로 바꾸어 준다는 의미의 DELIMITER를 사용합니다. (꼭 $$가 아니어도 됩니다.) 2. 다음은 프로시저를 생성하는 단계입니다. CREAT PROCEDURE 이름()으로 생성합니다. 3. BEGIN 을 시작으로 프로시저 내용을 적습..

DB/mysql(mariaDB) 2022.06.19

mysql stored procedure(저장 프로시저) 란?

mysql에는 sp(stored procedure)이 있습니다. 이는 저장된 sql을 순차적으로 실행하는 프로그램으로 질의 형식만 가능한 sql에 절차적인 실행을 가능하게 해주는 방법입니다. 이는 oracle에선 pl/sql이라고 불리며 mysql은 sp라고 불립니다.(정확히는 다르지만 sql을 절차적으로 실행하게 해줍니다.) 많은 분들이 장점과 단점을 말씀하시고 극명히 나타나는 장점과 단점도 있습니다. 장점 -빠른 처리속도(더하기 등의 사칙연산은 제외) DB에서 직접 데이터를 처리하여 더 빠른 속도의 처리가 가능 합니다. -높은 보안성 각 sp간의 보안이 개별화 되어 있어 일차적인 해킹을 막습니다.(sql injection 등) -높은 재활용성 필요한 부분의 sp를 만들고 이를 호출하여 데이터만 받아오..

DB/mysql(mariaDB) 2022.06.06

두 날짜의 차이값 계산 함수(TIMESTAMPDIFF)

TIMESTAMPDIFF(단위, 날짜 1, 날짜 2) 순서로 사용합니다. 이 함수는 날짜 2 - 날짜 1 의 값을 단위로 표현해준다. SECOND : 초 MINUTE : 분 HOUR : 시 DAY : 일 WEEK : 주 MONTH : 월 QUARTER : 분기 YEAR : 연 참조 : https://extbrain.tistory.com/78 [MySQL] 날짜 차이 가져오기 (DATEDIFF, TIMESTAMPDIFF 함수) ▶MySQL 날짜 차이 가져오기 (DATEDIFF, TIMESTAMPDIFF 함수) ▶설명 MySQL에서 두 날짜간의 차이를 가져올 때 사용하는 함수가 두 가지가 있습니다. 단순히 일 차이를 가져올 때 사용하는 것이 DATEDIFF 함수 extbrain.tistory.com

DB/mysql(mariaDB) 2022.05.25

csv를 mysqlDB에 넣기

LOAD DATA INFILE 'C:\Bitnami\wampstack-8.1.2-0\mariadb\data\part.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES; csv는 ,로 구분되는 파일이므로 , 로 단어를 구별하여 넣어줍니다. 또 줄이 바뀔경우 row를 구분하므로 \n으로 구분합니다. 첫번째 줄은 컬럼 이름이므로 무시합니다. 이 방법은 csv의 구조와 테이블의 구조가 비슷한 경우 사용할 수 있습니다.

DB/mysql(mariaDB) 2022.03.25