본문 바로가기

IT_Developers1149

MySQL - ERROR 1217(23000): Cannot delete or update a parent row: a foreign key constraint fails. / 외래키 제약 풀기 안녕하세요. 고코더 입니다. 오류 메시지 ●1. 데이터를 Delete 하던 중 이런 메시지를 만날 때가 있습니다. 해석 그대로 "상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다."입니다. ERROR 1217(23000): Cannot delete or update a parent row: a foreign key constraint fails. @@foreign_key_checks ●2.외래 키가 걸린 데이터는 순차적으로 삭제해야 하지만 옵션을 해제하여 삭제가 가능합니다. 먼저 외래키 제한이 있는 조회 합니다. SELECT @@foreign_key_checks; ●3. 조회 해보면 대부분 1로 되어 있을 것입니다. foreign_key_checks 설정 ●3. 해당 설정을 .. 2021. 11. 12.
MySQL - You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column MYSQL 업데이트, 딜리트시에 나타나는 오류 안녕하세요. 고코더 입니다. ●1. update, delete 작업을 실행할 시 where 절이 없으면, 이런 메시지가 나타는 경우가 있습니다. 해석 그대로 "안전 업데이트 모드를 사용 중이고 KEY 열을 사용하는 WHERE 없이 테이블을 업데이트하려고 했습니다."라는 메시지입니다. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column 해결 방법은 두 가지가 있습니다. 임시 해체 모드 ●2. SQL 상에서 임시로 해제가 가능합니다. 현재 세션에서만 한시적으로 where 절 없이 업데이트가 가능하도록 허용합니다. set sql_saf.. 2021. 11. 12.
MySQL - 오토커밋 설정, 해체하기 / AUTOCOMMIT, @@AUTOCOMMIT; MYSQL 오토커밋 변경하기 안녕하세요. 고코더 입니다. MySQL은 기본적으로 커밋 설정이 OFF 되어 있습니다. 그 말은 즉슨 데이터를 수정하면 즉시 반영된다는 말이죠. 오라클이랑은 기본 설정이 반대입니다. 그래서 이번 시간에는 오토커밋을 제어하는 방법을 알아보겠습니다. @@AUTOCOMMIT; ●1. 우선은 사용 중인 데이터베이스에서 오토 커밋 설정을 확인해야 합니다. 아래 SQL을 실행합니다. SELECT @@AUTOCOMMIT; ●2. 해당 결과 값입니다. 표시 내용은 0,1로 출력됩니다. 기본은 대부분 1로 되어 있을 것입니다. 0 - 오토커밋 설정 1 - 오토커밋 해제 SET AUTOCOMMIT ●3. 이번에는 오토커밋 속성을 변경해보겠습니다. 해당 명령어를 실행하면 현재 사용자의 오토커밋 .. 2021. 11. 12.
MySQL - 테이블의 사용중인 저장엔진 알아보는 방법 / information_schema.TABLES 안녕하세요. 고코더 입니다. 저장엔진의 대해서 설명을 하였습니다. 그리고 이번 시간에는 데이터베이스의 테이블에서 사용중인 저장엔진을 알아보는 방법을 알아보겠습니다. ●1. 사용법은 "information_schema.TABLES" 을 이용합니다. 해당 테이블을 테이블의 정의 및 정보를 알 수 있는데 여기에 바로 저장엔진도 표시가 됩니다. SELECT engine FROM information_schema.TABLES where table_name='테이블'; ●2. 실행 후에 나타난 모습입니다. 해당 테이블의 저장엔진을 확인할 수 있습니다. ●3. 간혹 테이블에 트랜젝션이 실행되지 않는다면 해당 방법을 통해 InnoDB가 맞는지 확인해보세요. 2021. 11. 12.
MySQL - 쿼리를 지연 시키기 / SLEEP() 의도적으로 쿼리 지연 시키는 함수 안녕하세요. 고코더 입니다. 쿼리를 의도적으로 중단시켰다가 다시 실행할 수 있는 함수가 있습니다. 바로 SLEEP() 입니다. 이름 그대로 잠깐 잠들었다 진행되게 만드는 역할을 합니다. 사용법 ● 1. 해당 SQL을 실행하면 'start'가 표시되고 10초 후에 End가 표시됩니다. 중간이 끼어든 sleep() 함수가 잠깐 멈추고 진행시키게 때문입니다. SELECT 'Start'; DO SLEEP(10); SELECT 'End'; 사용하는 이유? ● 2. 사실 대부분 테스트 용도로 많이 사용하게 됩니다. 중간에 실행되는 쿼리를 살펴보고 싶거나 결과를 확인하고 넘어가고 싶을때 사용하기도 합니다. 그리고 실무에서는 아직 한번도 사용해서 개발을 해본적은 없지만 필요한 경우는 .. 2021. 11. 12.
MySQL -사용 가능한 저장엔진(Storage Engine) 알아보기 / SHOW ENGINES 현재 MYSQL 에서 지원하는 스토리지 엔진 알아보기 안녕하세요. 고코더 입니다. ● 1. 저장엔진에 대해서 간단하게 알아보았습니다. 그런데 정작 중요한 건 내가 사용하는 MYSQL에서는 어떤 스토리지 엔진이 사용 가능한지 알아야 합니다. 그래서 간단한 명령어로 이를 알아보는 방법이 있습니다. SHOW ENGINES ●2. mysql에 상에서 "SHOW ENGINES" 명령어를 실행합니다. 그러면 아주 친절하게 사용 가능한 저장 엔진의 목록이 펼쳐집니다. 그리고 간단한 설명과 함께 트랜젝션 여부까지 역시 친절한 데이터베이스입니다. ●3. MYSQL에서 나온 내용 그대로 해당 설명을 표로 남겨드립니다. engine suport comment transactions xa FEDERATED NO Federat.. 2021. 11. 12.
MySQL - 저장 엔진(Storage Engine)이란? / 대표적인 종류와 실무에서 간단 사용법 안녕하세요. 고코더 입니다. 저장 엔진이란? 파일의 접근이다. ● 1. 저장엔진 일명 "스토리지 엔진"은 데이터베이스에서 데이터를 접근하는 방식에 대해 말합니다. Mysql에서 테이블을 생성하면 실제로 서버상에는. frm이라는 파일을 생성합니다. 이 파일에 접근하는 속성을 설정하는 것이 바로 저장 엔진입니다. 실제로 파일도 읽기 전용 파일, 수정 가능한 파일로 속성을 정할 수 있는 것처럼 저장 엔진도 이 파일에 대한 접근방식을 말합니다. 스토리지 엔진의 특성에 따라 데이터 접근, 안정성, 트랜잭션 등의 기능의 차이점가 발생합니다. 즉 다시 정리하면 "서버 엔진이 필요한 물리적인 데이터를 가져오는 장치"입니다. 대표적인 저장 엔진의 종류 저장 엔진 설명 특징 트랜젝션 여부 ISAM MySQL 5.0 이전에.. 2021. 11. 12.
JSTL - <c:out> 사용법과 특징 을 사용하는 이유 안녕하세요. 고코더 입니다. JSP 페이지를 작성하면 친숙하게 사용하는 문법 중에 하나가 이 c:out입니다. 데이터를 출력하는 가장 기본적인 방법입니다. 무심코 쓰였던 이 문법에 사용법과 특징을 이번 시간에 다뤄보려고 합니다. 사용법 ● 1. 사용법은 매우 간단합니다. value의 값을 입력하면 화면에 출력됩니다. ● 2. 한 가지 옵션을 다뤄본다면 escaperXml 속성 있습니다. 해당 옵션을 설정하지 않으면 ture입니다. 이는 c:out 이 기존 el 태그와 다른 강점을 보이는 옵션입니다. 특수문자를 문자 엔티티 코드로 변환시키는 역할을 합니다. 즉 문자 그대로 노출하게 만들어 줍니다. EL 태그 ${} 보다 c:out을 사용해야 하는 이유 앞서 배운 것처럼 보안성의 문제입니다.. 2021. 11. 12.
JAVA - String VS StringBuffer 의 차이는? / 쉬운 설명 String vs StringBuilder 안녕하세요. 고코더 입니다. 오늘은 String , StringBuilder 의 차이를 한번 알아보겠습니다. 실무에서는 대부분 "String"를 많이 사용합니다. 문자열을 조합하거나 이어 붙이는 작업등을 상관없이 사용합니다. 하지만 멀티쓰레드 환경에서는 "StringBuilder"를 사용하여 효율을 극대화 하는 경우가 있습니다. 비슷하지만 다른 이 두개의 클래스를 한번 살펴보겠습니다. String의 한계 기존 String은 불변성을 가지고 있습니다. 그래서 한번 선언한 후에 다시 변수에 데이터를 입력하면 문자열이 추가 되는 것이 아니라 새롭게 변수를 생성하고 이전에 있던 데이터는 가비지콜렉션이 자동으로 처리해주게 됩니다. 즉 String으로 문자열을 조합하는 일.. 2021. 11. 12.