[MariaDB] 비트 함수 및 연산자
·
Development/MySql
MariaDB에서 비트 연산자는 비트 수준에서 데이터를 조작하는 데 사용됩니다. 이는 비트 단위로 데이터를 처리할 수 있는 강력한 도구이며, 주로 플래그를 관리하거나 특정 비트 패턴을 검사하는 데 유용합니다. 아래는 MariaDB에서 지원하는 주요 비트 연산자들과 그 동작에 대한 설명입니다.1. AND 연산자 (&)두 피연산자 간의 비트 단위 AND 연산을 수행합니다.두 비트가 모두 1인 경우에만 결과가 1이 됩니다.SELECT 6 & 3; -- 결과: 2 (6 = 110, 3 = 011, AND 연산 결과: 010 = 2)2. OR 연산자 (|)두 피연산자 간의 비트 단위 OR 연산을 수행합니다.두 비트 중 하나라도 1인 경우 결과가 1이 됩니다.SELECT 6 | 3; -- 결과: 7 (6 = 1..
[MySQL] 생성된 컬럼에 auto_increment 속성 부여하기
·
Development/MySql
기존의 tdel_idx 필드에 저장된 값이 순서대로 들어가 있다면, 다음 단계로 tdel_idx를 AUTO_INCREMENT 속성을 가진 PRIMARY KEY로 변경할 수 있다. 테이블 구조 수정: tdel_idx 컬럼을 AUTO_INCREMENT로 변경하고 PRIMARY KEY로 설정 ALTER TABLE `tok_delete_keyword` MODIFY COLUMN `tdel_idx` INT(10) NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (`tdel_idx`); 중간에 누락된 번호가 있다면 AUTO_INCREMENT 값을 재설정: 기존의 데이터에 누락된 번호(예: 1, 2, 4, 5와 같이 3이 누락된 경우)가 있다면, AUTO_INCREMENT 값을 재설정하여 새로..
[MySQL] MySQL server has gone away
·
Development/MySql
서버가 오랜 시간 동안 비활성 상태로 있었다면 MySQL 서버와의 연결이 끊기면서 발생할 수 있다. vi /etc/my.cnf 로 MySQL 설정을 열어 본다. 내 설정 my.cnf에는 wait_timeout 설정이 되어있지 않았다. [mysqld] wait_timeout = 28800 # 8 hours interactive_timeout = 28800 # 8 hours my.cnf를 수정했다면, 적용 하기 위해 서버를 재시작한다. sudo service mysql restart 발생 원인 현재 Python으로 DB에 데이터를 insert하는 작업 중인데 작업 시간이 길어짐에 따라 발생하는 것 같다. 로그를 기록해뒀는데, MySQL 연결 부분은 에러처리가 안되어있었는지 로그에는 기록이 남은게 없고, 터미..
[MySQL] sql_mode=only_full_group_by 에러 해결 방법
·
Development/MySql
에러 내용 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'LG_NAVER_FINANCE.naver_finance_db.sd_idx' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'DB명.테이블명' which is not functionally dependent on ..
[MongoDB] MongoDB를 MySQL으로 마이그레이션 하기
·
Development/MySql
개요 MySQL에서 MongoDB로 마이그레이션 하는 경우는 많지만, MongoDB에서 MySQL로 마이그레이션 하는 경우는 상대적으로 적은 것 같다. MongoDB는 NoSQL로 대용량 데이터를 처리하기에 적합하다는 장점이 있지만 관계형 데이터베이스 지원이 되지않기 때문에 현재하려는 프로젝트에서는 마이그레이션이 필요하다. 하지만 이 작업에는 여러 에러요소들이 있는데.. 에러요소 1. 대용량 데이터 export했을 때 전체 용량이 12GB로 꽤 큰편이다. 텍스트가 많아서 어쩔 수 없다. 2. 데이터에 ,(콤마) 가 있음 csv는 구분자가 콤마인데 레이블에 콤마가 포함되어있을 경우 import시 에러가 발생한다. (원하는 양식대로 인식하지 못함) 3. json 추출 시 MySQL에서 불러오지 못함 현재 사..
[MySQL] 테이블 깨졌을 때 복구하기
·
Development/MySql
어느날 DB에 데이터가 없어서 확인하려고 조회를 해봤더니 테이블이 깨져있었다.ː̗̀(ꙨꙨ)ː̖́ 산넘어 산 .. 갑자기 왜이럴까요 오류내용 select 시 아래처럼 경고창이 표시되었다. Table './DB명/테이블명' is marked as crashed and last (automatic?) repair failed 테이블이 깨졌구나(올것이 왔구나) 이제 작업을 하기전에 먼저 mysql의 버전을 다시 한번 확인해 준다. select version() 확인해보니 5.6.11 버전이다 ㅎ ANALYZE TABLE 명을 통해 테이블을 조회해본다. ANALYZE TABLE 명 MySQL이 테이블의 키 분포에 대한 통계를 수집하도록 한다. 이 통계는 MySQL 쿼리 최적화기가 쿼리를 더 효율적으로 실행할 수 ..
[MySQL] checking permissions
·
Development/MySql
checking permissions이란Checking permissions 상태에서 멈춘 MySQL 연결은 보통 MySQL 서버에서 사용 권한을 검사하는 동안 발생하며, 대개 네트워크 또는 디스크 I/O 문제로 인해 발생한다고 한다.MySQL-설정: my.cnf -접속: mysql -u root -p USE `DB명`; SHOW CREATE TABLE `테이블명`; -- 테이블 정보해결방법MySQL 버전 업그레이드 (현재 버전: 5.1.54 > 5.2 이상) : MySQL 버전이 오래되면 checking permissions 상태에서 자주 멈추는 경우가 있으므로 최신 버전으로 업그레이드하는 것이 좋음. MySQL 5.1.54버전에서는 해당 상태가 오래걸리는 것이 일반적인 현상이며, 인증 및 권한 부여 ..
[MySQL] 데이터 치환하기
·
Development/MySql
replace()함수를 사용하여 데이터를 치환할 수 있다. # 테이블 데이터 조회 select * from table_name where idx = 1 and status_code!= 3 # 변경할 값 확인 SELECT REPLACE(name, 'ABC0', 'ABC00') AS 'replaced_data' FROM table_name where idx = 1 and status_code!= 3 and name like "%ABC0%" # update로 값 변경 UPDATE table_name SET name = REPLACE(name, 'ABC0', 'ABC00') where idx = 1 and status_code!= 3 and name like "%ABC0%" 검색결과에서 abc0과 abc00의 ..