Unix 환경이 Linux에서 Mysql을 설치하면

Window 환경과 다르게 쿼리문 자체에서 대소문자 구별을 해버린다.

그래서


아래와 같이 코드를 작성 할 경우, 


SELECT

A.SEQ

, A.SUBJECT

, B.SEQ as IMG_SEQ

, B.CONTENTS_NAME

, B.CONTENTS_ORI_NAME

, B.CONTENTS_PATH

, B.CONTENTS_TYPE

, B.TEXT1

FROM

ADMINBOARD A ,

ADMINIMG B

WHERE

A.SEQ= #seqId#

AND A.SEQ = b.BOARD_SEQ

AND A.IMG_CATEGORY = #imgCategory#

ORDER BY

A.KEYVISUAL_ORDER


org.springframework.web.util.NestedServletException: Request processing failed;

에러를 낸다


그래서 이럴 경우에는

아래와 같이 해결 한다.



SELECT `AUTO_INCREMENT`

FROM  INFORMATION_SCHEMA.TABLES

WHERE TABLE_NAME   = 'adminboard'




40분동안 찾음;

쿼리문 예제)


UPDATE TABLE

SET

name = CASE

WHEN id = 1 THEN "lion"

WHEN id = 2 THEN "cat"

END

WHERE

name IN (1, 2)



아이바티스 예제)

<update id="modifyOrdering" parameterClass="java.util.List">

<![CDATA[

UPDATE ADMINBOARD

SET

KEYVISUAL_ORDER = CASE

]]>

<iterate conjunction=" ">

WHEN seq=#[].seqId#  THEN #[].keyviOrder# 

</iterate>

<![CDATA[

END

WHERE

KEYVISUAL_ORDER IN (1, 2, 3, 4, 5, 6);

]]>

</update> 

case 1) HashMap 형태


public void insertIntoImg(List<NeliVO> neliVoList) {

HashMap<String, Object> param = new HashMap<String, Object>();

param.put("List", neliVoList);

getSqlMapClientTemplate().insert(NAMESPACE  + "insertIntoImg", param);

}



<insert id="insertIntoImg" parameterClass="java.util.HashMap">

INSERT INTO ADMINIMG (

BOARD_SEQ

, CONTENTS_PATH

, CONTENTS_NAME

, CONTENTS_ORI_NAME

, CONTENTS_TYPE

, TEXT1

, REG_DATE

<dynamic>

<iterate prepend="VALUES" conjunction=", " property="List">

#List[].seqId# 

, #List[].path#

, #List[].fileName#

, #List[].oriFileName#

, #List[].contentsType#

, #List[].text1#

, now()

)

</iterate>

</dynamic>

</insert>





case 1) List 형태


public void insertIntoImg(List<NeliVO> neliVoList) {
getSqlMapClientTemplate().insert(NAMESPACE  + "insertIntoImg", neliVoList);
}


<insert id="insertIntoImg" parameterClass="java.util.List">

INSERT INTO ADMINIMG (

BOARD_SEQ

, CONTENTS_PATH

, CONTENTS_NAME

, CONTENTS_ORI_NAME

, CONTENTS_TYPE

, TEXT1

, REG_DATE

)  VALUES

<iterate conjunction=", ">

#[].seqId# 

, #List[].path#

, #List[].fileName#

, #List[].oriFileName#

, #List[].contentsType#

, #List[].text1#

, now()

)

</iterate>

</insert>

권한이 없기 때문에 localhost로는 접근이 가능하지만 타 IP로는 접근 권한이 없으므로


권한을 주어야한다.


mysql > GRANT ALL PRIVILEGES ON *.* TO root@'IP_주소' IDENTIFIED BY 'qwer1234' WITH GRANT OPTION;


여기서 IP_주소 는 mysql이 깔린 HOST 주소가 아니라 연결 하고 싶어하는 Client 측 IP를 말한다.

mysql 설치 시 이런 에러창이 뜨면

mysql 5.6. x버전 이상은 ms .net 기반으로 만들어 져서 .net을 설치 해야 한다는 말이다.


http://www.microsoft.com/ko-kr/download/details.aspx?id=17113


아래 사이트 가서 닷넷을 받으면 해결 완료

#mysql

jdbc.db1.driverClassName=com.mysql.jdbc.Driver

jdbc.db1.url=jdbc:mysql://localhost/neli

jdbc.db1.username=scott

jdbc.db1.password=tiger




#Oracle setting

jdbc.db2.driverClassName=oracle.jdbc.driver.OracleDriver

jdbc.db2.url=jdbc:oracle:thin:@localhost:1521:orcl

jdbc.db2.username=scott

jdbc.db2.password=tiger

/* % : 모든 외부 접속 권한 허용 */

INSERT INTO mysql.user (host,user,password, ssl_cipher, x509_issuer, x509_subject, authentication_string) VALUES ('%','아이디',password('비밀번호'),'','','','');


or


/* localhost : 내부 로컬만 접속 권한 허용 */

INSERT INTO mysql.user (host,user,password, ssl_cipher, x509_issuer, x509_subject) VALUES ('localhost','아이디',password('비밀번호'),'','','');



flush privileges;


/* jh명의 database명들에 관한 dbuser 권한 설정 (동시에 외부 접속허용 %) */

/* 주의해야할점 database명이 ' ' 가 아닌 ` */

grant all privileges on jh.* to jh@% identified by 'qwer' with grant option;



/* jh_ 이름들로 시작한 database명들 모두 */

`jh_%`


or


/* jh명의 database명들에 관한 dbuser 권한 설정 (동시에 로컬만 접속허용 localhost) */

grant all privileges on jh.* to jh@localhost identified by 'qwer' with grant option;




// 모든 grant 문에는 flush privileges 를 할 필요없다



/* 유저 삭제 */

drop user 'jh'@'localhost';


/* 권한 확인 */

show  grants for 사용자명;


SUBSTR : 문자열 자르기

SUBSTR(사용할 문자열 OR 숫자 , 자를위치 , [ 자를길이 ])


SELECT  SUBSTR('YYYYMMDD', 1, 4) --1부터 4까지
결과값  : YYYY


SELECT SUBSTR('YYYYMMDD', 4) --4를 포함한 전부

결과값 : MMDD






INSTR : 찾고자 하는 문자열의 인덱스를 리턴
INSTR('검색대상문자열', '찾고자하는 문자열', '시작할 인덱스' [,몇번째 발견한 것인지]')


INSTR(JOIN_ACCESS_POINT_CD,'007','1','1') = 0

1부터 시작해서 007이라는값이있는 인덱스를 반환

없으면 0

+ Recent posts