로컬 테스트시 오류 발생
원인유추
  1. 권한문제
  2. 타임존 인식문제
 
  1. 은 아니었고 왜냐면 툴(workbench)로 잘 접속된다. telnet 해봐도 연결 잘되고
 
검색하다보니,  아래 글을 발견
타임존을 아시아/서울로 설정하니 해결됨.
 
 
mysql-connector-java 5.1.X 버전 이후로 KST 를 인식못하는 오류가 있다.
 
 
또는, 기존 운영중인 서버라면 아래와 같이 Asia/Seoul 로 설정해 준다.

 

타임존을 UTC 또는 Asia/Seoul 로 지정해야 정상적으로 연결된다.또는 커넥터를 낮은 버전으로 해도 된다.
반응형

대문자로 만들어놓은 테이블명이 무슨이유인지 .. 모르겠지만 소문자로 변경되었을 떄

대문자로 다시 변경하는 방법

대/소문자 구분이 없는경우이므로 대/소문자를 동일하게 인식한다.

 

테이블명 : TB_MEMBERS

sql > rename tb_members to TB_MEMBERS

이런식으로하면 오류가 발생한다. 동일한 이름으로 인식하므로.. 

따라서 아래처럼 해야한다.

sql > rename tb_members to tb_members_temp

sql> rename tb_members_temp to TB_MEMBERS

 

 

sql> rename tablename to tempName;
sql> rename tempName to TABLENAME;

 

반응형

mysql 설치하고 한글 깨짐 발생

mysql >  status; 해보면 캐릭터셋이 저 모양이다.

 

설치 폴더(C:\Program Files\MySQL\MySQL Server 5.7)에 my.ini 파일을 찾아서 수정하면 된다고 하는데..

근데.. 파일이 없다. 한참 찾았다. 그래도 안보인다. OTL

만들어도 봤다.... 안된다.

아~ 놔 @,.@

 

파일은 여기 있었다.

C:\ProgramData\MySQL\MySQL Server 5.7

 

근데 저 폴더가 안보인다. 

눈을 씻고 찾아봐도 안보인다.

근데 저 경로를 입력하면 보인다. 

 

보기탭에서 숨긴 항목 체크해주면 보인다.

한참 찾았네..

 

이제 설정을 바꿔줘야지 my.ini를 열고

뭐가 잔뜩 써있다.

 

그 중 주석으로 되어있는 기본 문자셋서버 문자셋utf8로 변경하면 된다.

앞에 # 은 주석이라는 의미 # 을 지우고 뒤에 utf8 이라고 적는다.

 

#default-character-set=
default-character-set=utf8


#character-set-server=
character-set-server=utf8

 

서비스 열고 

Mysql57 서비스를 재시작한다.

 

 

변경되었는지 확인해본다.

 

이제 한글 잘 된다.

 

my.ini 변경하면서 

Mysql57 서비스 시작중 오류 1503 발생으로 삽질을 좀 했는데..

결국 원인은 my.ini 에 오타때문이었다... 

 

반응형

한참 찾았다. 흠.

SELECT time_to_sec( timediff( now(), stime ) );  
/* stime 부터 지금 까지 초과한 시간을 초로 환산한 결과임.  정수로 출력. */
반응형


instr 은 있는데 ..  뒤에서 부터 찾는 instrb 가 없어서 만들어봤다.

DELIMITER $$

DROP FUNCTION IF EXISTS `dbname`.`uft_InStrB` $$
CREATE DEFINER=`username`@`%` FUNCTION `uft_InStrB`(v_str varchar(1000), v_index varchar(100)) RETURNS int
BEGIN
  BEGIN
    DECLARE x_index int;

     SET v_str = REVERSE(v_str);

     SELECT instr(v_str, v_index) into x_index;

     SET x_index = (Length(v_str) - x_index) + 1;

    RETURN x_index;
  END;
END $$

DELIMITER ;

예>
SELECT uft_instrb ('123_123_23', '_');    //결과 :  8

반응형
1. 백업

C:\>mysqldump -uroot -p[비밀번호] [백업할DB명] > [백업파일명].sql

이렇게 하면 [백업파일명].sql 파일이 생성된다.
이 파일에는 테이블 생성 및 데이터 insert 등의 sql 문장이 가득 들어있다.

2. 복구

C:\>mysql -uroot -p[비밀번호] [복구할DB명] < [복구할파일명].sql

이렇게 하면 복구 된다.  참 ~ 쉽다.

전체를 백업할 때는 mysql 데이터베이스도 함께 백업 받아두어야 한다.


실제 예>
1. 백업

C:\> mysqldump -uroot -p1111 test > test_backup.sql

test 데이터베이스가 test_backup.sql 파일로 백업된다.

2. 복구

C:\> mysql -uroot -p1111 test < test_backup.sql

test 데이터베이스에 백업한 내용이 복구 된다.


- 헉~ 데이블과 데이터만 백업되네요.. 프로시저, 함수 등은 백업이 안되네요.. 다른 방법이 있을텐데.. 찾으면 다시 올릴게요
반응형

Rand() 함수가 존재하며 그 결과값은 0부터 1 사이의 값을 리턴한다. (예: 0.43325987654098)

따라서 0 부터 9 사이의 난수를 발생하려면...

SELECT  Floor( Rand() * 10 );

참고로 Floor( 값 ) 는 값보다 작은 정수 중 가장 큰 수를 반환한다.
반응형

저장 프로시저 내에서 Cursor를 사용해야할 때가 가끔 있다...

예>

BEGIN
DECLARE x_done int DEFAULT 0;
DECLARE x_num  int;
DECLARE x_name   varchar(20);
DECLARE cur_TestCursor CURSOR FOR
       SELECT  num, name   FROM MemberInfo;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET x_done = 1;   /* 데이터가 없으면 x_done=1 */
OPEN cur_TestCursor;

   REPEAT
      FETCH NEXT FROM cur_TestCursor INTO x_num, x_name;      /* 변수에 값을 담는다 */

        IF NOT x_done THEN

/* 여기서 수행할 쿼리를 해준다 */

        END IF;

   UNTIL x_done END REPEAT;         /* x_done이 1이 될때까지 반복된다 */
 CLOSE  cur_TestCursor;
END;

반응형

날짜 형식..  "yyyy-mm-dd hh:mi:ss"

MSSQL 에서  

Convert(char(19), GETDATE(), 120)
MYSQL 에서는
CAST( DATE_FORMAT( NOW(),'%Y-%m-%d %H:%i:%s' ) AS CHAR(19) )


날짜 형식..  "yyyymmdd"

MSSQL 에서
Convert(char(8), GETDATE(), 112)


MYSQL 에서는
CAST( DATE_FORMAT( NOW(),'%Y%m%d' ) AS CHAR(8) )


 
반응형

CONST CONNECT_MYSQL_STRING = "Driver={MySQL ODBC 3.51 driver}; Server=127.0.0.1; Database=test;Uid=testuser;Pwd=1234;"

Set connDB = Server.CreateObject("ADODB.Connection")

connDB.Open CONNECT_MYSQL_STRING
connDB.Execute("set names euckr")     <- 요고 해주면 된다.

.
.
.


반응형

+ Recent posts