본문 바로가기

DB

(15)
MY SQL RECORD LOCK PROCESS KILL 레코드 행락 킬하기 최근 작업하다가 MYSQL에서 INNODB RECORD LOCK이 생기는 현상이 있어서 이를 해결 했던 방법을 적으려 합니다한행의 INDEX를 기준으로 LOCK을 걸어서 해당 행에 SELECT , UPDATE, DELETE 를 하지 못하도록 막아놓은 처리가 RECORD LOCK입니다.이때 LOCK 이 걸리게되면 해당 트랜잭션이 처리가 될때까지 다른 세션에서는 해당 레코드에 어떠한 쿼리를 실행해도 대기 상태에 걸리게 되는데요 이를 강제적으로 처리하는게 해당 LOCK을 건 트랜잭션을 찾아서 KILL 해버리는 방법입니다MY SQL 8.0버젼 부터는 performance_schema.data_locks 에 lock에 관한 정보가 조회되어 나옵니다.  SELECT * FROM performance_schem..
MY SQL 데이터베이스에서 특정 컬럼명 포함된 테이블 찾는 방법 MY SQL에서 특정 컬럼명을 포함한 모든 테이블을 조회 하고 싶을 때가 있는데 그럴땐 아래와 같은 쿼리를 작성하면 됩니다. SELECT TABLE_SCHEMA , TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'username' AND TABLE_SCHEMA = 'your_database_name'; 위처럼 INFORMATION_SCHEMA.COLUMNS 뷰는 데이터 베이스의 테이블의 컬럼정보를 제공하며 test라는 컬럼을 column_name에 조건으로 걸어주게된다면 아래와 같이 test라는 컬럼명을 포함한 테이블 명칭이 조회되어 나오게 됩니다. 뿐만아니라 INFORMATION_SCHEMA.COLUMNS 뷰의 컬럼의 내용은 아래와 같습..
MySQL 기본 인코딩 UTF-8설정하기 mysql을 사용할때 인코딩이 utf-8로 설정이 안되어 있어서 한글이 깨지는 현상이 있을 때 매번 alter 구문이나 create 구문으로 인코딩을 직접 지정하려니 힘들어서 기본 인코딩 설정법을 알아보겠습니다. 환경은 window 로컬환경이며 my Sql versison 은 8.0.35 입니다. 버젼 확인법은 아래쿼리를 실행시켜서 나오는 vestion 값 입니다. my sql 버젼 확인 쿼리 : SHOW VARIABLES LIKE '%verstion' 1. show variables LIKE '%dir%' 쿼리를 통해서 폴더 경로 파악 위 쿼리를 통해서 폴더의 경로를 파악하고 my.ini파일을 찾는다 2.cmd를 관리자 권한으로 실행한 뒤 아래 명령어 실행 notepad C:\Program Files\..
MySql Unable to connect to foreign data source: Can't connect to MySQL server on 간단 해결 My Sql Federated 작업을 하다가 위와 같은 오류가 났습니다. 위 오류는 A서버에서 B서버로 연결을 시도할 때 발생한 오류로 여러가지 시도와 검색을 하였으나 발견하기 힘든 오류였습니다. 그러나 B서버에서 A서버로의 Federated가 성공하는 것을 보고 단순한 권한 설정과 혹은 방화벽 허용 문제라는 것을 금방 알았습니다. 저의 경우에는 위 문제는 단순한 ip 허용 문제였지만 이외에도 max connection 설정, 권한문제 등등 많은 케이스가 있는 것 같습니다.
My Sql 1429 : Unable to connect to foreign data source connection error my sql에서 federated를 사용하여 db를 서로 연결시키는 작업을 진행하다가 위 오류를 마주 했습니다. 해당 내용을 찾아보니 원본서버에 connection 수가 너무 많아서 생기는 문제라고 합니다. 해결 하는 방법은 크게 2가지 정도가 있는 것 같은데.. 제가 해본건 1번 뿐 1.쿼리 or 설정파일 변경 SHOW VARIABLES LIKE '%error%'; SET GLOBAL max_connect_errors = '지정값' 위 쿼리를 사용하여 max_connection의 수를 늘리는 방법과 my.ini 또는 my.cnf 의 설정에 들어가서 아래 설정을 넣는 방법이 있습니다. max_connections = '지정값' wait_timeout = '지정값' 2.해당 db를 사용하는 서비스 프로그램..
MySql LOAD DATA LOCAL 사용법 not found error 처리 LOAD DATA LOACAL INFILE 은 my sql에서 txt나 csv형식의 데이터 파일을 읽어와서 db에 insert 시키는 방법입니다. MY SQL이 위치되어 있는 LOCAL 에서 해당 파일의 절대 경로를 입력하여 사용가능하며 CHARACTER 로 인코딩을 지정 하고 FIELDS TERMINATED 로 컬럼 구분자 LINES TERMINTED 로 행 구분자를 지정해 줍니다. 쿼리문은 아래와 같습니다. LOAD DATA LOCAL INFILE '파일명' INTO TABLE 테이블명 CHARACTER SET UTF8MB4 FIELDS TERMINATED BY '\t' -- 컬럼 구분자 LINES TERMINATED BY '\n' -- 행 구분자 + 파일명과 테이블명을 제대로 입력했는데 not fo..
MSSQL create database 사용 권한이 거부되었습니다 해결 법 MSSQL을 사용할때 'create database 사용 권한이 거부되었습니다' 라는 문구가 나올 때가 있습니다. 이는 해당 로그인 계정에 create 권한이 없기 때문에 발생하는 문제로 mssql을 사용하여 응용 어플리케이션에 연결 할때 등 mssql의 로그인 계정에 세팅에 관한 문제입니다. 이를 해결하기 위해서는 1.SSMS(SQL Server Management Studio) 에 접속 2. 보안 폴더- 로그인 폴더에서 권한을 넣어줄 계정 선택 3.해당 계정 더블 클릭 후 좌측의 서버 역할 클릭 4. dbcreator ,public , sysadmin 체크 선택 후 확인 아래는 서버역할을 msdn에서 가져온 것 입니다. sysadmin sysadmin 고정 서버 역할의 멤버는 서버에서 모든 작업을 수..
ORA-00911 문자가 부적합 합니다. 오류 원인 해결 C#어플리케이션에서 쿼리를 날렸을때 ORA-00911 문자가 부적합 합니다. 라는 오류가 발생했습니다. 해당 오류의 쿼리문을 찾아서 DB에서 실행 해봤지만 문제가 없이 정상적으로 실행이 되었습니다. 소스에서는 실행이 안되나 DBMS에서 쿼리를 사용하면 실행이 안되는 오류라면 아래방법을 확인 하면 됩니다. 해결법 소스상에 ; , .등 기호가 잘못 들어가 있는지 확인하면 해결이 됩니다. (저의 케이스에는 ;(세미콜론)이 로직에 작성되어 있어 생긴 에러였습니다.)
MSSQL datetime 형식으로 조회 및 입력하는 방법 cast,convert mssql에서 datetime 형식으로 값을 넣을 때 Cast와 Convert를 활용하여 시간과 날짜를 같이 입력하는 방법 입니다. 1. Convert활용 --Convert 활용 insert into 테이블명 (컬럼명1) values (convert(datetime,'2023-03-18 10:34:09.000')); convert와 datetime을 활용하여 datetime형식으로 변경하여 입력하는 방법입니다. 2.Cast 활용 --Cast 활용 insert into 테이블명 (컬럼명1) values (cast('2023-03-18 10:34:09.000'as datetime)); Cast를 활용하여 datetime형식으로 형변환을 하여 입력하는 방법입니다. 3.조회 방법 위의 두쿼리를 사용하여 입력하였..
MSSQL 현재 시간 구하는 법 형식 변환 하는 법 getdate() mssql에서 현재 시간과 날짜를 구하는 방법 1. SLEECT GETDATE() GETDATE를 사용하면 현재 날짜와 시간 초 까지 출력 됩니다. 2. SELECT CONVERT(CHAR(10),GETDATE(),23) YYYY-MM-DD로 출력 할때는 MSSQL의 날짜 변환 표를 사용해서 위와 같이 출력하면 됩니다. 2-1. SELECT CONVERT(DATE,GETDATE()) 똑같이 YYYY-MM-DD로 출력하고 싶을때 DATE를 CONVERT안에 넣에주면 똑같은 YYYY-MM-DD형식으로 출력 됩니다. 3.GETUTCDATE() GETUTCDTAE 는 표준시간을 출력하는 메서드입니다. GETUTCDATE도 마찬가지로 CONVERT를 사용하여 원하는 형식으로 출력 할 수 있습니다. 3-1 SELE..