mysql 시퀀스 컬럼 생성 및 초기화

생성예제

CREATE TABLE `board` (
`seq` int(11) NOT NULL AUTO_INCREMENT,
`writer` varchar(20) NOT NULL,
`title` varchar(100) NOT NULL,
`content` mediumtext,
`pwd` varchar(20) NOT NULL,
`hit` decimal(5,0) NOT NULL,
`groups` decimal(10,0) NOT NULL,
`step` decimal(3,0) NOT NULL,
`level` decimal(3,0) NOT NULL,
`bname` varchar(10) NOT NULL,
`regdate` datetime NOT NULL,
PRIMARY KEY (`seq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

초기화 예제

alter table board auto_increment=1;

참고사이트 : http://roqkffhwk.tistory.com/136

CENTOS7 MYSQL5.7 INSTALL

참고페이지 주소 :

How to install MySQL Server 5.6 on CentOS 7 / RHEL 7

따라해본 기록

]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
Cap 2015-12-13 17-51-34-433

]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
Cap 2015-12-13 17-52-33-917

]# yum install mysql-server
Cap 2015-12-13 17-53-54-834
Cap 2015-12-13 17-55-17-522.png
Cap 2015-12-13 17-58-06-689
[설치완료!!]

기동
systemctl start mysqld
Cap 2015-12-13 18-04-33-675

정지
systemctl stop mysqld
Cap 2015-12-13 18-05-17-524.png

재시작 (재시작 후 프로세스 id가 바뀜)
Cap 2015-12-13 18-06-30-795

mysql 초기 설치 후 root 암호 설정법
1.
]# mysql_secure_installation
Cap 2015-12-13 18-24-16-295

이리 했는데 로컬에서 mysql로 아예 접속이 안된다.
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
-> mysql -p[PASSWORD] 를 입력하니 mysql 접속이 된다.

Can’t connect to MySQL server on ‘xxx.xxx.xx.xxx’ (10060)
-> 이런 에러는 리눅스 서버 자체 방화벽에서 막힌것이다
-> gui 에서 firewall 설정에서 mysql 혹은 tcp 3306 포트를 오픈한다

원격으로 WorkBench가 접속이 안될때
-> 터미널에서 mysql 접속
-> use mysql
-> select * from user;
-> update user set host=’원격접속ip’ where host=’127.0.0.1′;
-> commit;

————————————————————

[아래는 rpm 설치 실패 기록]

1. 설치파일 다운로드
– 주소 : http://dev.mysql.com/downloads/mysql/
Cap 2015-12-13 17-22-24-567

64bit 버전을 다운로드 받는다.

2. 업로드
Cap 2015-12-13 17-28-56-583

3. 압축해제
Cap 2015-12-13 17-31-48-419

4. 설치 (rpm 설치는 또다시 의존성 지옥으로…)
Cap 2015-12-13 17-40-18-195.png

mariadb 관련 lib를 찾는 것 같으니 yum 으로 설치
Cap 2015-12-13 17-42-41-898

이러고 설치를 해봐도 안됨.

 

 

mysql 한글 깨짐 (해결)

[결론]
– mysql 을 기본 설치시 캐릭터 셋이 latin1
– latin1 으로는 한글이 정상 표기가 되지않음
– 이미 만들어진 테이블의 컬럼의 캐릭터 셋을 바꾼후 새로 insert 한 데이터 부터 정상 처리됨.

[참고사이트]
http://blog.beany.co.kr/archives/405
http://roqkffhwk.tistory.com/142

[삽질기록]
라즈베리파이에 mysql을 설치해서 jdbc를 이용하여 프로그래밍 연습중 한글이 깨지는 현상 발견Cap 2015-02-08 15-33-11-743

웹에서 검색해보니 캐릭터셋 문제로 mysql 설치시 흔하게 발생되는 문제로 보여짐

1. db에서 캐릭터셋 확인법
(1) 관리자 계정으로 mysql 접속
Cap 2015-02-08 15-37-39-868
 (2) mysql 에서 캐릭터셋 확인 sql 수행
– status
Cap 2015-02-08 15-52-10-376

– show variables like ‘c%’
Cap 2015-02-08 15-39-13-359

2. 조치방법
(1) mysql 설정파일 수정
– 위치 : /etc/mysql/my.cnf
– 추가내용

[client]
#하단삽입
default-character-set = utf8

[mysqld]
#하단삽입
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci
 
[mysqldump]
#하단삽입
default-character-set = utf8

[mysql]
#하단삽입
default-character-set = utf8

(2) mysql 리스타트
– sudo service mysql restart

3. 확인
(1) 설정변경 확인
Cap 2015-02-08 16-09-33-809

Cap 2015-02-08 16-09-54-365

(2) 프로그램에서 다시 조회
Cap 2015-02-08 16-13-08-324

– 여전히 값이 깨진다. 이전 인코딩시 들어간 데이터는 여전히 깨지는 것으로 보인다.
– 새로운 값으로 insert 후에 어떻게 되는지 확인해보자  ( mysql -uroot -p sample 로 접속후 )
Cap 2015-02-08 17-58-17-168

– 여전히 에러발생. 다른 문제인듯 함.
Cap 2015-02-08 17-56-30-316
Cap 2015-02-08 17-57-40-045
– 이미 만들어진 sample DB는 latin1 으로 캐릭터 셋이 맞춰져 있으므로 당시 만든 테이블의 컬럼의 캐릭터 셋을 바꿔줘야함

[Solution]

ALTER TABLE `sample`.`address` 
CHANGE COLUMN `zipCode` `zipCode` VARCHAR(10) CHARACTER SET 'utf8' NULL DEFAULT NULL , 
CHANGE COLUMN `siDo` `siDo` VARCHAR(20) CHARACTER SET 'utf8' NULL DEFAULT NULL ;

Cap 2015-02-08 18-07-50-259
  Cap 2015-02-08 18-08-40-358

해결!!

DB2 10.5 Express 설치 – LINUX (결과 : 실패)

신규 고객사 연계할 프로그램에서 DB2를 사용해야할 일이 생겼다. 그래서 설치를 한다.

AIX용 DB2-EXPRESS 버전은 없다.

그외 OS에는 DB2-EXPRESS 버전은 있다.

설치버전

DB2 : 10.5 EXPRESS

OS : redhat-release-5Server-5.8.0.3

설치매뉴얼

버전별 매뉴얼 다운로드 위치

http://www-01.ibm.com/support/docview.wss?uid=swg27023558

10.5 버전의 설치매뉴얼 을 받을 수 있다. – 번역된 버전도 있으나 한글은 엄슴…

http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg27038855

Cap 2014-11-04 16-39-09-317

밑의 Getting Started with DB2 Installation and Administration on Linux 머시기의 pdf 아이콘 클릭

1. 설치전 시스템 환경 확인

./db2prereqcheck

Cap 2014-11-04 16-56-25-442

yum install sg3_utils

./db2prereqcheck

Cap 2014-11-04 17-03-09-943

yum install kernel-devel

Cap 2014-11-04 17-09-20-643

설치 사전작업 완료

2. DB2 설치

일반게정으로 ./db2setup

Cap 2014-11-04 17-30-58-984

망할…자세히 보니 LINUX 버전이 낮아서 안되는 거다…DB2 버전을 낮추자 (10.5 -> 10.1)

헐 IBM 사이트에서 구 버전을 찾기가 느무 어렵다.

구글 삽질중 아래 사이트를 통하니 찾을수 있었다.

http://db2express.com/ko/

10.1 linux 64bit 버전을 찾아 사전설치 확인 진행

Cap 2014-11-05 10-45-33-060

./db2setup 을 하면 아래와 같은 에러발생

Cap 2014-11-05 10-52-48-697

./db2_install 로 재실행

Cap 2014-11-05 10-59-23-805

Cap 2014-11-05 11-01-34-844

성공한듯 하다

설치매뉴얼에 나온데로 sample db를 만든다

cd 설치경로/bin

./db2sampl

이 커멘드를 먹이고 시간이 좀 지나면 설치가 완료된다

접속테스트

오라클같이 sqlplus 와 같은게 무엇인지 한참 헤멨다.

bin 디렉토리에 db2를 실행하면 됬다…

Cap 2014-11-05 15-45-44-674

sample db 접속하여 쿼리문까지 정상적으로 수행된다.

그럼 원격에서 db2에 접속하고 싶은데 설치매뉴얼에는 그런 내용이 엄따…

쉣…gui로 다시 설치해야겠다.

삭제는

홈디렉토리/sqllib/bin/adm/db2stop

홈디렉토리/expc/db2_deinstall -a

홈디렉토리/sqllib

삭제성공 -> 기존 sqllib 디렉이 sqllib_bak으로 변경되었다.

리눅스 x 윈도 환경으로 들어가야하는데…우찌해야하나…

다른분께 x윈도우 들어가는 법을 부탁하여 알아냄

xming 설치 -> xlaunch 실행 -> 다음 -> 다음 -> putty -> x11 -> 설치계정 -> localhost:0

gnome-session

db2setup 실행

Cap 2014-11-05 18-43-46-370

ㅠㅠ

Cap 2014-11-05 18-46-57-832

Cap 2014-11-05 19-00-15-401

왜날뷁…설치이미지는 어디있을까…젠장 포기다.

2014/12/14 재시도 해보았으나 동일한 위치에서 위와 같은 에러가 발생함

db2 설치 버전에 문제가 있는것으로 보고 db2 10.5 linux 32 bit 버전으로 설치해본다

결과 : 실패 (64bit 버전을 설치하라고 뜸)

Cap 2014-12-14 16-51-21-051

————————————————————————————————————————

하다하다 안되서 해당 리눅스에서는 db2 설치가 안되는 것으로 결론을 내리고

윈도우 개발서버에 설치하니 한방에 끝남..-_-

DB2 NULL값을 0으로 변환후 MAX + 1 구하는 법

1. 실제 사용 테스트 쿼리

SELECT MAX(SEQ) AS MAXSEQ,

COALESCE(MAX(SEQ), ‘0’) + 1 AS NEXTSEQ,

CASE WHEN MAX(SEQ) IS NULL THEN 0 ELSE MAX(SEQ) +1 AS NEXTSEQ2

FROM TB_CERT_HISTORY

WHERE DOC_NO = ‘T-001’

 

여기서 SEQ의  MAX값을 구하려면 DOC_NO로 GROUP BY를 먹여야 되지 않나 하는 실수를 하지말자…삽질을 너무 오래했다…

 

2. 참고 URL : http://blog.naver.com/PostView.nhn?blogId=qmffjem09&logNo=70036028605&categoryNo=17&viewDate=&currentPage=1&listtype=0

 

3. 블로그 내용

//MSSQL

select ISNULL(max(WR_NO),0) as u_id from vote_Doc

//DB2
EX1)
select CASE WHEN MAX(WR_NO) IS NULL
THEN 0
ELSE MAX(WR_NO) END as u_id
from vote_Doc
EX2)
select COALESCE(MAX(WR_NO),0) as u_id
from vote_Doc

값증가시
만약 MAX(u_id)에 1을 증가하려면

select CASE WHEN MAX(WR_NO) IS NULL
THEN 0
ELSE MAX(WR_NO) + 1 END as u_id
from vote_Doc

== 동일표현식 하나 더

select COALESCE(MAX(WR_NO) + 1,0) as u_id
from vote_Doc