'MySQL & MariaDB'에 해당되는 글 3건

  1. 2017.04.07 데이터 암호화와 복호화..
  2. 2017.03.20 IFNULL..
  3. 2014.12.01 Column count doesn't match value count at row 1 에러..
MySQL & MariaDB2017. 4. 7. 12:24

MySql과 MariaDB에는 데이터를 암호화 해주는 Function이 있다.


AES_ENCRYPT와 AES_DECRYPT가 있는데..

이 함수만을 쓴다고 암호화와 복호화가 되는것이 아니라 HEX와 UNHEX를 사용해서 보기좋은 문자열로 만들어 줘야한다.

사용방법은 AES_ENCRYPT에 암호화할 문자열과 키로 사용할 문자열을 같이 넣어주면 된다.


SELECT HEX(AES_ENCRYPT('암호화할 문자열', 'Key');


위는 문자열을 암호화 하는 방법이고 아래는 암호화한 문자열을 복호화 하는 방법.


SELECT AES_DECRYPT(UNHEX('암호화된 문자열'), 'Key');


근데 여기서 문제점은 위의 방법으로 데이터를 암호화 해서 Table에 Insert하고 암호화 된 데이터를 테이블에서 Select하는 과정에서 생긴다. 분명 쿼리를 실행하면 제대로 된 데이터가 나오는데..

실제로 Java에서 데이터를 불러오면 아스키 코드가 결과값으로 출력 되는 현상이 생겨버린다.


이럴땐 CAST함수를 사용하면 된다.


CAST(AES_DECRYPT(UNHEX('암호화된 문자열'), 'Key')AS CHAR)


위와 같이 사용하면 제대로 된 문자열이 출력 되는것을 볼수 있다.


'MySQL & MariaDB' 카테고리의 다른 글

IFNULL..  (0) 2017.03.20
Column count doesn't match value count at row 1 에러..  (0) 2014.12.01
Posted by Z700zZz
MySQL & MariaDB2017. 3. 20. 15:58

MySql과 MariaDB에서 Function을 사용 할때나 일반적인 쿼리를 사용 할경우 IFNULL을 사용할때가 있다.

이때 쿼리의 결과가 있는 경우와 없는 경우가 있는데..

쿼리의 결과가 있는 경우에는 IFNULL이 정상 작동해서 Null일 경우에 처리 되는 값이 정상적으로 처리가 된다.

하지만 쿼리의 결과가 1Row도 없을 경우에는 값이 제대로 나오지 않는다.

이럴경우에는 IFNULL을 사용하나 마인 상황이 발생한다.


IFNULL(MIN(컬럼), 0)

IFNULL(MAX(컬럼), 0)


위와 같이 IFNULL처리하는 컬럼에 MIN이나 MAX로 한번 감싸면 문제는 해결 된다.

IFNULL이 아니더라도 적어도 1개의 Row가 나와야 하는 상황이라면 MIN이나 MAX로 감싸도록 하자.



Posted by Z700zZz
MySQL & MariaDB2014. 12. 1. 16:49

Column count doesn't match value count at row 1


위와 같은 에러를 뿜는다면..


내가 실행하고 있는 컬럼의 갯수와 타입이 제대로 되어있는지 확인하면 된다.


어쩌다보니 MySQL까지 하고 있네..

'MySQL & MariaDB' 카테고리의 다른 글

데이터 암호화와 복호화..  (0) 2017.04.07
IFNULL..  (0) 2017.03.20
Posted by Z700zZz