본문 바로가기
반응형

DATABASE18

[mysql]where like절에서 특수문자 사용 방법 like안에서 특수문자를 사용해야 하는 경우가 있다. 그런데 그냥 넣어서 되지 않는다고 당황하지 말고 \(역슬래쉬)를 넣자! 예를 들면 다음과 같다. SELECT * FROM board WHERE tags LIKE '%\#생일%'; (where like에서 '#생일'을 검색하는 예시) 2022. 9. 5.
INSERT INTO 테이블 VALUES, INSERT INTO 테이블 SET MySQL에서 데이터를 insert를 시킬때 아래와 같은 두 가지 방법이 있다. (SQL 표준) 1. insert into 테이블 (a, b, c) values (1,2,3) (MySQL 확장) 2. insert into 테이블 set a=1, b=2, c=3 위의 두 방법은 동일한 결과를 보여주며 2번의 경우에는 MySQL에서만 사용가능하다. 지금까지 1번 방법만 썼는데 프로젝트 진행 중 2번이 나와서 잠시 당황 했었다. 그래서 찾아보니 오류를 찾거나 수정을 하기에 용이하기 때문에 2번의 방법을 쓰는 사람도 많다고 한다. 자꾸 하다보니 몰랐던게 나오는데 언제쯤 줄어들런지....모르겠다 ㅠㅠ 2022. 3. 18.
sql mode 임시로 변경 일반적으로는 sql mode를 수정하기 위해서는 my.cnf파일을 수정하여 재부팅하면 되나, 급하게 또는 그렇게 할 수 없을 경우 서버가 재부팅 되기 전까지는 아래의 명령어가 그대로 적용될 수 있다. sql mode 확인 : select @@GLOBAL.sql_mode; sql mode 변경 : set GLOBAL sql_mode=''; 현재 mamp를 쓰는 상황에서 my.cnf파일을 찾지 못해 다음과 같이 임시로 적용해서 테스트 중에 있다. 애초에 쿼리 자체를 문제가 생기지 않게 변경하면 되지만.....(생략) 프로젝트는 언제나 시간이 문제일뿐.. 2022. 3. 2.
ubuntu mysql 자동 로그인 mysql에 로그인 하기 위해서는 "mysql -u 아이디 -p"를 하고 비밀번호를 입력하여 로그인을 해야 한다. 이 번거로운 작업을 명령어 한줄로 줄일 수 있다. mysql_config_editor set --login-path=설정이름 --user=아이디 --password 이렇게 치면 비밀번호를 입력하는게 나온다. 등록된 정보를 전체 보는 방법 : myslq_config_editor print --all 특정 설정에 대해서 보는 방법 : mysql_config_editor print --login-path=설정이름 삭제 하는 방법 : mysql_config_editor remove --login-path=설정이름 설정을 하고나서 mysql에 로그인 하는 방법 : mysql --login-path=설.. 2021. 9. 1.
mysql 오류 확인 및 리커버리(innodb_force_recovery) 이번 프로젝트를 하면서 DB가 깨지는 현상이 발생했다. 그 후에 mysql server자체가 켜지지 않고 오류 로그를 봐도 이해 되지 않는 현상 발생.. 그럼 mysql server가 켜지지 않을떄는 innodb_force_recovery를 해봐야한다. /etc/mysql/mysql.conf.d/mysqld.cnf파일 안에 추가를 해야하며 각 레벨마다 다른 점이 있다. 레벨0이 기본 모드이고 1부터 6까지 순서대로 해보기를 추천한다(레벨이 올라갈수록 데이터 유실률이 올라갈 수 있다는것) https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html MySQL :: MySQL 8.0 Reference Manual :: 15.21.3 Forcing.. 2021. 8. 24.
MySQL deterministic에 대해서(with function) MySQL을 사용하면서 function을 처음 실무에 사용해봤다. 무려 8년 만에..... 그냥 그런게 있다는거만 알고 있었고 심지어 procedure는 아직 써보지를 못했다. 진행중인 프로젝트에서 function을 만들게 되었는데 정말 우연히 발견한건데 속도 차이가 나는것을 확인하였고, index를 타지 않는다는 원인을 확인 하였다. 아래는 만들었던 함수인데 그냥 참고용으로 보면된다. geo_map이라는 테이블 안에서 특정 경로 내의 바운딩 박스를 만들고 그것을 확장시키는 함수이다. 그리고 실제 사용처는 확장된 바운딩 박스를 활용해서 그 안에 있는 경로를 찾는 용도이다. DROP FUNCTION if EXISTS calc_bounding_box; DELIMITER $$ CREATE FUNCTION ca.. 2021. 7. 29.
728x90