DBMS/MYSQL
[MySQL/MariaDB] DB 서버 버전 확인하는 가장 쉬운 방법 (SHOW VARIABLES · SELECT version())
DBeaver 접속해서 mysql db server 버전을 확인하도록 하자 1. [SQL 편집기] > [새 SQL 편집기 클릭] 2. MySQL 버전 확인 쿼리SELECT version(); [결과]5.7.402-1 . MySQL 버전 확인 쿼리SHOW VARIABLES LIKE '%VERSION%' [결과]innodb_version 5.7.40protocol_version 10slave_type_conversions tls_version TLSv1,TLSv1.1,TLSv1.2version 5.7.40version_comment MySQL Community Server (GPL)version_compile_machine x86_64version_compile_os Linux
[MYSQL] 데이터베이스 테이블 용량 확인
[ 데이터베이스별 용량 조회 ]-- Database SizeSELECT table_schema AS 'DatabaseName' , ROUND(SUM(data_length+index_length)/1024/1024, 1) AS 'Size(MB)'FROM information_schema.tablesGROUP BY table_schemaORDER BY 2 DESC; table_schema "bmwgs",SUM(data_length + index_length) / 1024 / 1024 "Size(MB)"FROM information_schema.TABLESGROUP BY table_schema; [ 테이블별 용량 조회 ]-- Table SizeSELECT table_name AS 'TableName' , R..
[MYSQL] SQL Error [1406] [22001]: Data truncation: Data too long for column 'XXX' at row 1
[Error 내용]Error synchronizing data with database이유: SQL Error [1406] [22001]: Data truncation: Data too long for column 'XXX' at row 1[원인]- Column의 크기보다 큰 데이터를 삽입하려고 해서 발생 [해결] - 문제되는 Column 의 DataType 을 늘려주면 해결 예) varchar(20) -> varchar(300) 으로 변경
[MYSQL] 계정 동시 접속자 차단 (max_user_connections )
데이터베이스 사용자계정을 체계적으로 관리하기 위해 mysql 에서 제공하는 파라미터 중 max_user_connections 을 활용해보기로 했다 max_user_connections 은 지정한 mysql 계정에 허용되는 최대 동시 연결 수 이다 -- 최대 커넥션 개수 조회 SELECT max_user_connections FROM mysql.user WHERE user='userid' AND host='%'; -- 최대 커넥션 개수 업데이트 UPDATE mysql.user SET max_user_connections = 1 WHERE user='userid' AND host='%';
[MYSQL] Function Definer 변경
A DB 와 동일하게 B DB 생성 해주세요 라는 요청 사항이 왔다. 어렵지 않으니 해드리지요!! 오잉?! 근데 이관하고 보니 저장함수 (function)에 특정 사용자가 정의 되어 있어 실행이 되지 않는다.... 당황하지 말고 아래 쿼리 대로 실행 해주자 -- 함수 확인 SELECT* FROMmysql.proc WHEREDEFINER= '기존계정@%' ANDTYPE = 'FUNCTION'; -- 함수 정의자 수정 UPDATEmysql.proc SETDEFINER = '새로운계정@%' WHEREDEFINER= '기존계정@%' ANDTYPE = 'FUNCTION'; -- 함수 정의자 변경 상태 확인 SHOW FUNCTION STATUS;
[MYSQL] SQL Error [1701] [42000]: Cannot truncate a table referenced in a foreign key constraint
TRUNCATE TABLE 명령어로 데이터 삭제 하려는데 아래 처럼 오류가 난다.. [에러내용] " SQL Error [1701] [42000]: Cannot truncate a table referenced in a foreign key constraint (`DB명`.`참조하는테이블`, CONSTRAINT `외래키명` FOREIGN KEY (`외래키`) REFERENCES `DB명`.`테이블명` (`컬럼`)) " [발생원인] 외래키 제약조건에 따른 에러로 FOREIGN KEY (외래키) 로 참조되고 있는 TABLE의 데이터를 삭제하고자 할때 나는 에러이다 [해결] 데이터 삭제 전에 외래키(Foreign Key) 를 무시하도록 설정 하여 해결 1. 외래키(Foreign Key) 체크 하지 않는다는 설정..
[MYSQL] 사용자 (USER) 계정 권한 설정
"MYSQL 사용자 계정을 추가 하고 권한 설정을 하려고 할때 어디까지 권한을 줘야 할까?" 상황에 따라 다르긴 하겠지만 개발자와 책임질수 있는 설계자 DBA 의 권한은 구분되어야 한다고 생각한다 개발자 DELETE, INSERT, SELECT, UPDATE 설계자 ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE, DELETE, INSERT, SELECT, UPDATE DBA ALL
[MYSQL] 컬럼 추가
디자인 툴로 컬럼을 추가해도 되지만 쿼리(query) 로 사용하면 더 편할 때가 있다. 테이블에 컬럼 추가 할 경우 쿼리를 정리해보았다. 컬럼추가 ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입 DEFAULT 기본값 컬럼위치
[MYSQL] AWS RDS MYSQL KILL
AWS RDS MYSQL 환경에서 Lock 에 걸렸을 때 mysql kill 쿼리 실행을 하면 프로세스 종료를 할 수 없는 현상을 만나게 된다. -- MYSQL KILL KILL 프로세스ID; 결과 AWS RDS 일경우는 아래 처럼 실행하면 프로세스 종료되는 것을 확인 할수 있다. -- AWS RDS MYSQL KILL CALL mysql.rds_kill(프로세스ID)
[MYSQL] 실행쿼리 강제 종료 (KILL)
MYSQL 운영시 잘 수행 되던 쿼리 가 테이블 Lock 이 발생하여 지연 및 장애가 발생 하는경우가 종종 있다. Lock 상태인 프로세스만 조회 하여 강제 종료 해보도록 하겠다. 1. Lock 상태인 프로세스 확인 SELECT* FROMinformation_schema.processlist WHERESTATE LIKE 'Locked'; 2. KILL KILL 프로세스 ID 3. Lock 걸린 프로세스 일괄 강제 종료 SELECTCONCAT('KILL ',id,';') Kill_msg FROMinformation_schema.processlist WHERESTATE LIKE 'Locked'; 4. information_schema.processlist 테이블 정보 확인 컬럼 내용 ID 프로세스 ID US..