본문 바로가기

MySQL에 해당하는 글들

22 Articles matched
목록이 없습니다.
[MySQL/MariaDB] URL Decoder 함수 만들기 클라이언트 요구사항 클라이언트의 요구사항 중에 서비스 페이지에 접근되는 사용자들의 아이피, 어떤 브라우저, 모바일인지 PC인지, 어떤 파라미터를 던지는지를 DB로 저장해서 보고싶어하는 경우가 있습니다. 이 때 파라미터를 querystring으로 구성하면 URL로 구성이 되기 때문에 인코딩을 해주어야 파라미터에 따라 에러가 발생할 것을 미리 발생하지 않게 예방이 가능합니다. 하지만 이렇게 인코딩 된 상태로 DB에 저장이되면 클라이언트가 보고 싶던 파라미터는 어떤 값인지 알 수 없게 됩니다. 이 때 쿼리를 조회해올 때 URL Decoder 함수를 만들어서 해당 함수로 디코딩을 하여 클라이언트에게 결과를 전달해주면 됩니다. MySQL / MariaDB URL Decoder 함수 DELIMITER | CREAT..
[MySQL] 덤프 밀어넣을 시 비밀번호에 특수문자 처리 상황 MySQL 또는 MariaDB에서 기존에 들어있던 데이터를 백업하거나 누군가에게 전달해주기 위해서 덤프라는 것을 합니다. 이 덤프 파일은 실제로는 쿼리문이 들어있습니다. 테이블을 다시 생성하고 안에 들어있던 데이터를 그대로 다시 넣어주는 쿼리문입니다. 서버를 관리하는 사람 그리고 DB를 관리하는 사람이라면 덤프를 하고 다시 밀어넣는것을 최소 한번쯤은 경험을 하실 수 있습니다. 덤프를 하고, 밀어넣는 과정에는 해당 데이터베이스에 접근할 수 있는 권한을 가진 계정이 필요합니다. 이 때 데이터베이스 계정의 비밀번호에 보안을 신경써서 특수문자가 포함되어 있을 수 있습니다. 그러면 아래와 같이 일반적인 로그인 방식으로는 접속할 수 없습니다. $ mysqldump -u username -p abcd!@#$ -..
[Mybatis] Null 컬럼 누락 현상 상황 프로시저를 통해서 다양한 쿼리를 구성하는 상황에서 어느 순간 에러가 발생했다. 처음에는 프로시저가 문제인줄 알았으나 원인 파악을 해보니 null 데이터가 들어가있는 경우 해당 컬럼이 생략된 채로 결과가 나오는 바람에 에러가 발생했다. 해결 이는 mybatis에서 설정이 가능하다. 아래 setting 태그를 mybatis 설정 xml 파일에 추가해주면 된다. 위와 같이 셋팅해주면 null 데이터인 컬럼도 함께 나온다. 쉽고 간단하게 해결했다.
[MySQL/MariaDB] 서버 시작 에러 에러 내용 root@db-server:~# systemctl status mariadb.service ● mariadb.service - MariaDB 10.5.8 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/mariadb.service.d └─migrated-from-my.cnf-settings.conf Active: failed (Result: exit-code) since Mon 2021-05-31 11:14:34 KST; 24s ago Docs: man:mariadbd(8) https://mariadb.com/..
[MySQL/MariaDB] Error 2020: Got packet bigger than 'max_allowed_packet' 상황 insert 하는 경우 제목과 같은 에러가 발생하는 경우가 있는데 이 경우 Client와 Server사이에 주고 받을 수 있는 packet의 사이즈가 정해져있는데 아무 설정도 해주지 않았다면 기본값이 들어가있을것입니다. 보통은 1M이 기본값입니다. 문제를 해결하기 위해서는 max packet 사이즈를 늘려주어야하는데 그 설정값이 에러메시지에도 나와있는 max_allowed_packet입니다. 설정 방법은 아래 두가지입니다. my.cnf 수정 my.cnf ... [mysqld] max_allowed_packet = 128M ... 옵션 지정 아래와 같이 mysql 명령문 수행 시 옵션을 지정해줄 수 있습니다. mysqldump 명령어를 통해서 DB 덤프를 생성할 때는 my.cnf에 설정된 값이 적용되..
[MySQL] 함수 생성 시 에러 발생 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 상황 함수를 생성하려고 했으나 아래와 같은 에러메시지가 발생함. 에러메시지 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 해결 DB의 root로 접속하여 아래 쿼리를 수행해주고 재생성 SET GLOBAL log_bin_trust_function_creators = 1;
[MySQL] ERROR 1118 (42000) : Row size too large (> 8126). Changing some columns to TEXT or BLOB my help. In current row format, BLOB prefix of 0 bytes is stored inline. 제목과 같은 에러가 발생한 경우 mysql이나 mariadb에서 어떤 특정 테이블의 전체 column의 크기를 합친게 mysql이나 mariadb에 설정된 테이블당 최대 크기를 넘은 상태를 의미한다. 정확히는 Engine이 innodb로 된 테이블의 최대 크기를 의미한다. 이럴때는 해결방안이 2가지가 있다. 해결방안 1 에러 로그에도 나와있는 방법으로, varchar로 선언되어있는 컬럼들 중에서 크기가 큰 컬럼의 데이터 타입을 TEXT나 BLOB으로 변경해주는 것이다. TEXT나 BLOB타입은 테이블 데이터에 저장되지 않고 별도의 공간에 분리되어 저장된다고 한다(?) 정확히 무슨 의미인지는 아직 잘 모르지만.. 이렇게 함으로써 해결할 수 있다. 해결방안 2 my.cnf(my.ini) 설정을 수정해준다. ..
[MySQL/MariaDB] 데이터베이스 용량 보기, 테이블 별 용량 확인 서버 관리를 하다보면 어떤 데이터베이스의 용량의 얼마나 되는지 또는 어떤 테이블의 용량이 얼마나 되는지가 궁금할 때가 생깁니다. 이런 경우에 서버에 접속하지 않고 쿼리만으로 알 수 있는 방법이 있어서 정리해보려고 합니다. 데이터베이스별 용량 확인 SELECT table_schema "Database Name", SUM(data_length + index_length) / 1024 / 1024 "Size(MB)" FROM information_schema.TABLES GROUP BY table_schema; 테이블별 용량 확인 SELECT concat(table_schema,'.',table_name), concat(round(data_length/(1024*1024*1024),2),'G') DATA, c..