인텔리J(Intellij)로 Spring boot를 사용하여 Java Application을 만드는 와중, 인텔리J에서 직접 실행을 할 때에는 이상이 없었으나, Jar로 빌드를 한 후 실행을 하게 되면, Could not find com.mysql:mysql-connector-j 위와 같은 에러 문구가 뜨면서 실행이 되질 않았다. 그렇게 원인을 찾아본 순간, 내 Gradle 설정에 MySQL Connector가 2개 중복 설정이 되었다는 것을 깨달았다. 그리고 이렇게 중복으로 설정된 가장 큰 원인은 MySQL Connector가 버전에 따라 패키지 명이 바뀌게 되면서 인지를 하지 못했기 때문이었다. MySQL 8.0.31 이전 버전우선 예전부터 내가 자주 사용하였던, 8.0.31 이전 버전의 커넥터는 ..
MySQL 혹은 MariaDB에서 널(NULL) 값을 다른 값으로 교체를 하고 싶을 경우, 대표적으로 2가지의 방법을 활용하는데요. 2가지의 방법을 모두 활용해보고, 어떤 차이가 있는지 알아보도록 하겠습니다. IFNULL 함수 우선 NULL값을 가장 심플하게 처리하는 방법으로는 IFNULL이 있습니다. IFNULL은 2개의 인자를 받아서 첫번째 인자가 NULL값인 경우 두번째 인자로 대체하는 함수입니다. 간단히 생각해서 IFNULL(값, 대체값) 형식으로 사용되며, 여기서 값이 NULL일 경우 대체값으로 처리 되는 방식입니다. 사용 방식 SELECT IFNULL(column_name, '교체할값') From table_name; 예시 SELECT IFNULL(sales, 0) from sales_tabl..
내부적으로 사용하는 MySQL의 테이블이 대문자로 되어 있었고, 이를 Spring boot의 JPA를 활용하여 접근을 하고자 하였다. Entity와 Repository를 만들고, 이제 JPA를 연결하려 시도를 하였는데 다음과 같은 에러가 발생하였다. 에러 화면 에러를 보면, gpt_member라는 테이블이 없다고 나오는데 내가 만든 테이블의 명칭은 대문자로 "GPT_MEMBER"라는 테이블이었다. 즉, 내부적으로 소문자로 테이블을 호출하고 있다는 것이었다. Entity 클래스를 보면, 분명 대문자로 어노테이션이 되어 있는 것을 확인할 수 있다보니, 내부적으로 소문자로 치환해서 변환하는 것 같아서 ChatGPT에게 문의를 해도 이해를 하지 못하는 것 같았다. 문제 해결 구글링해본 결과 이와 같은 JPA 문..
DB에서 데이터 값이 존재하지 않을 경우 Null이라고 하고, 빈값일 경우 Empty라고 합니다. Null 체크 방법 MySQL에서 Null을 체크하기 위해서는 아래와 같이 IS NULL 아니면 IS NOT NULL을 사용 하면 됩니다. 컬럼 IS NULL 컬럼 IS NOT NULL 예를 들어, title이라는 컬럼에 Null 값이 들어올 수 있을 경우, title IS NULL 이라고 할 경우 title에 값이 없 경우를 지칭하며, title IS NOT NULL이라고 할 경우 title에 NULL값이 있는 경우를 지칭합니다. SELECT * FROM BOARD WHERE TITLE IS NOT NULL; 예를 들어 위와 같이 쿼리를 날릴 경우, BOARD라는 테이블(혹은 VIEW)에서 TITLE에 값..
MySQL 혹은 MariaDB에서 뿐만 아니라 오라클(Oracle) DB에서도 Group by는 존재합니다. 워낙 범용적으로 사용되고 데이터의 확인 용도 뿐만 아니라, 통계 등에 사용되기 때문에 필수로 알아야 될 쿼리(Query)인데요. 해당 쿼리에 대해서 알아보도록 하겠습니다. 그룹 바이(Group by) 우선 해당 쿼리문을 한번에 이해하기 보다는 하나씩 이해하는 편이 좋습니다. 그룹바이라는 쿼리는 데이터를 기준이 되는 값으로 그룹을 묶어서 보여줘라라는 뜻입니다. 해당의 쿼리는 예제를 보면서 확인해보도록 해보죠. stock_nm|country|exchange| --------+-------+--------+ 삼성전자 |korea |KOSPI | 카카오 |korea |KOSPI | 네이버 |korea |..
에러 캡쳐 개발서버에서 문제가 없던 프로그램이 운영에서 배포하였을 시 이와 같은 문제가 발생하였다. url을 잘못쓴건지, id 패스워드가 다른건지 계속 찾아보고 있었는데 알고보니 운영서버의 DB의 버전이 8.x 대여서 구버전 드라이버가 연결이 안되는 문제였다. 기존 설정 Class.forName("com.mysql.jdbc.Driver") mysql mysql-connector-java 5.1.37 변경 설정 Class.forName("com.mysql.cj.jdbc.Driver") mysql mysql-connector-java 8.0.23
테이블 생성하는 방법은 많은 DB Tool들이 대다수 지원을 하는 것이지만, 본 포스팅은 대표적인 Mysql(혹은 MariaDB) 무료 툴중 하나인 DBeaver로 설명을 해보도록 한다. 만약 DBeaver를 설치하지 않았다면, 아래 링크를 들어가서 먼저 DBeaver를 설치하고 다시 돌아오면 좋을 것이다. 무료 DB Tool, DBeaver (디비버) 무료 DB Tool, DBeaver (디비버) 디비버(DBeaver)는 무료로 사용할 수 있는 DBMS 툴과 동시에 다양한 DBMS를 핸들링할 수 있다. 일반적인 관계형 DBMS의 경우 JDBC API를 사용하여 JDBC 드라이버를 통해 데이터베이스와 통신하며, NoSQL의 needneo.tistory.com 디비버를 모두 설치하였다면, 데이터베이스를 접..
MySQL 혹은 MariaDB를 설치하였다면, 제일 처음 해야 할 일은 작업을 해야 할 공간인 데이터베이스(Database)를 생성하는 것이다. 일반적으로 데이터베이스는 프로젝트 단위로 생성하는 것이 일반적이지만, 프로젝트들이 서로 연결이 되는 경우 하나의 거대한 데이터베이스를 사용하기도 한다. 데이터베이스가 서로 다를 경우, 즉 다른 데이터베이스에 있는 테이블들은 같이 사용할 수 없기(편법이 있긴 하지만) 때문에 즉 같이 써야 하는 테이블들은 한 데이터베이스에 뭉쳐놔야 한다는 점을 잊지 말도록 한다. MySQL Client 접속 MySQL로 검색을 하든지 설치한 앱을 찾아서 직접 실행을 하든지 그림 1.의 MySQL Client를 클릭한다. Root 비번을 입력하면, 그림 2와 같이 명령어들을 실행할 ..
마리아DB는 MySQL를 만든 창업자가 만든 무료 DB로 MySQL을 인수한 Oracle의 상업적인 모습에 뛰쳐나와 만들었다. 그래서 둘은 스펙적으로 매우 유사하며 상업적으로 변모하는 MySQL을 쓰던 기업들이 MariaDB로 기업들이 이전을 하는 모습을 보인다. 아마도 InnoDB 스토리지 엔진을 제외한 MySQL에 있는 기능 대부분은 썬 마이크로시스템즈때 있었던 기능들입니다. 오라클 인수 후 MySQL은 발전하지 않았습니다. 오라클은 ‘MySQL을 어떻게 하면 자신들의 소유로 할 수 있을까’만 고민했고, 그래서 회사를 나왔습니다. - MariaDB를 만든 몬티 와이드니어스 - MariaDB는 MySQL을 쓰던 기업들이 언제든 Maria로 교체하는 것을 쉽게 하기 위해서 호환성을 유지하며 기능적으로도 ..
MySQL에서 DB값을 설정할 때 Host URL을 properties에 직접 입력하여 preparestatement와 같은 JDBC를 사용할때와 spring과 같은 곳에서 data-source를 세팅할 때 delimiter 에러가 발생할 수 있다. Mysql이 버전업이 되면서 SSL을 사용하는 것이 Default가 되면서 url에 useSSL을 false하는 경우가 많아졌는데, 이때 앰퍼샌드(ampersand, &, 앤드 기호)를 사용하게 된다. properties에서 앰퍼샌드는 그대로 입력하면 되지만 spring의 xml 설정같은 곳에서는 앰퍼샌드를 사용할 경우 에러가 발생한다. 해결방법 & -> & 해결방법은 이와같이 &이후에 amp;를 추가로 붙여주면 해당 에러는 발생하지 않게 된다.
전자정부프레임워크는 기본적으로 iBatis 혹은 MyBatis를 이용하여 DB를 연동하게 된다. 일반적으로 DAO단에서 DB를 호출 할 때 sqlMapClient를 호출하게 되는데 전자정부프레임워크에는 이러한 부분이 노출되지 않고 숨겨져 있어서 다중으로 호출을 하는 분들이 힘드실 수 있다. 이에 간단한 가이드를 제공하고자 한다. 우선 DB를 연동하기 위해서는 Bean을 신규로 2개를 생성해야 하는데 우선 dataSource를 신규 생성해야 한다. egovframework/spring/context-datasource.xml을 열어서 --> 이와같이, 기존의 dataSource 말고 하나를 더 추가하여, 다른 이름의 bean을 만든 후 egovframework/spring/context-sqlMap.xml..
Mysql로 개발을 할 때, 다양한 이유로 인해서 캐릭터셋이 깨지는 경우가 발생한다. DB설정의 문제일수도 있고, Table을 생성할 때 문제일수도 있고, 혹은 Web 단에서 파라미터 전송시 캐릭터셋을 제대로 지정하지 않아서 생길 수 있는 문제도 있다. 이러한 다양한 캐릭터셋 문제를 해결하기 위한 팁들을 포스팅해보고자 한다 톰캣(Tomcat)에서 파라미터가 깨질 경우 흔하디 흔한 방법이다. 톰캣에서 8080 포트에서 캐릭터셋을 지정하면 파라미터가 UTF-8로 인코딩 된다. 1 스프링(Spring)에서 캐릭터가 깨질 경우 스프링에서 개발을 할 때, 캐릭터를 위한 필터링을 web.xml에 설정할 수 있다 1234567891011121314151617181920212223242526272829303132 en..