flyway 명령어 정리

  1. 다른 계정으로 flyway에 접속하여 수행
    • flyway -url=jdbc:mariadb://127.0.0.1:3306/aivapp -user=root -password=passwd -target=01.00 migrate
  2. flyway에서 관리된 sql 스크립트 목록 확인
    • flyway info
  3. sql 스크립트 수행
    • flyway migrate
  4. 특정 버전까지만 스크립트 수행
    • flyway -target=01.01 migrate
  5. 중간에 빠진 스크립트를 수행
    • flyway -target=01.01 -outOfOrder=false migrate
  6. sql 실행시 에러가 발생하여 Fail 난 것 초기화
    • flyway repair
Advertisements

[해결] flyway 한글 insert 실패 기록

테스트 삼아 윈도우 로컬에 mariadb 10.1.31 설치 후 flyway 4.2.0 버전으로 insert 수행시 아래와 같은 에러가 발생한다.

heidiSQL에서 직접 해당 sql 파일을 실행하면 잘됨

아래처럼 flyway (윈도우 버전) 을 사용하면 에러 남

—————————————————————————————————————————————-

D:\opensource\flyway-4.2.0>flyway migrate
Flyway 4.2.0 by Boxfuse

Database: jdbc:mysql://127.0.0.1:3306/aivapp (MySQL 10.1)
Current version of schema `aivapp`: << Empty Schema >>
Migrating schema `aivapp` to version 01.16 – aivapp
WARNING: DB: Table ‘tbl_dctnr_mgmt’ already exists (SQL State: 42S01 – Error Code: 1050)
ERROR: Migration of schema `aivapp` to version 01.16 – aivapp failed! Please restore backups and ro
code!
ERROR:
Migration V01_16__aivapp.sql failed
———————————–
SQL State : 22007
Error Code : 1366
Message : Incorrect string value: ‘\xF3\xBC\xBC\xBA\xEF\xBF…’ for column ‘lable_nm’ at row 242

[해결]

01.16 버전 sql 스크립트를 유니코드 UTF-8 로 변환하여 저장 하니 정상적으로 실행되었다.

단순한 문제였는데 한참 삽질하였다…

flyway 정리

flyway : db 스크립트를 git 으로 관리하면서 그 스크립트를 flyway 툴을 이용하면 손쉽게 db서버에 테이블 생성 및 데이터 삽입을 가능하게 하는 툴

 

중간에 0 ~ 5까지 flyway 로 넣고 6~ 11을 건너띄고 12번 스크립트를 넣고나서
6~11이 ignored 가 뜨는데 이를 해결하는 방법이 있는 페이지https://dzone.com/articles/flyway-20-out-order-migrations

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

참고페이지 주소 :
http://sharadchhetri.com/2014/07/31/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=&quot;SET collation_connection = utf8_general_ci&quot;
init_connect=&quot;SET NAMES utf8&quot;
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

해결!!