본문 바로가기

개발관련/컴퓨터 문제 해결사

[mysql]삽질..


오토커밋 안될때..

데이터를 넣고나서 삭제할려고 하니깐 아래의 메세지가 나왔다...

Error Code: 1175
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

이건 또 뭔가 싶어..찾아보니..아래꺼를 한번 실행시켜주고 하란다.

SET SQL_SAFE_UPDATES=0;


잘됨!

windows7 에서 MySQL 재설치

1. 제어판에서 삭제
2. programfiles 에서 폴더 삭제
3. 콘솔창을 관리자모드로 켜서 서비스삭제
sc delete MySQL

4. C:\ProgramData\MySQL 폴더 삭제
5. 재부팅

다시 설치~! 아...왜 이렇게 만들어 놓은거임..ㅠㅠ

한글인코딩 관련 왕삽질
여기링크 참조함
http://ceomk.tistory.com/47

utf8 인코딩 관련해서 세팅하는거는 모르는 사람에게는 악마적인 수준인듯?!

+ 문서 인코딩이 UTF8 인지 확인한다.
+ 문서의 언어셋(charset) 이 UTF8 인지 확인한다.
+ DataBase 의 언어셋이 UTF8 인지 확인한다.(utf8_unicode_ci 또는 utf8_general_ci)
+ DataBase 의 테이블의 언어셋이 UTF8 인지 확인한다.(위와 동일)
+ 테이블의 컬럼중 char가 들어가는 컬럼들의 언어셋이 UTF8 인지 확인한다.
/* 위 사항만 확인하면 대부분 한글깨짐 현상을 미연에 방지할 수 있다. */

위에꺼는 기본이다...
근데 미치겠는거는 위에꺼 다 확인해도 안되더란 말이다!!

내가 처한 상황은 이렇다.

case1
 - php페이지에서 한글데이터를 mysql로 인서트
 - 데이터가 깨져서 들어감.
 - 그런데 읽어올때는 잘 읽어옴..ㅡㅡ;

case2
 - php페이지에서 $db->set_charset("utf8"); 을 사용해서 강제로 인코딩하여 한글로 넣음
 - DB에 한글로 잘 들어감.
 - php페이지에서 읽을때 ??? 이렇게 표시됨

이렇다는 말은....
1. DB에 데이터가 들어갈때에는 DB에서 인코딩을 처리하지 않는다.
2. 나올때에는 그 데이터를 utf8로 변환한다.

라는 생각이들었다.

그래서 my.ini/my.cnf 파일에 다음과 같이 추가

[mysqld]
skip-character-set-client-handshake

저게 무슨말이냐면.. 클라이언트에서 들어오고 나가는 값을 DB에서 처리하지 않는다는 말이다.

그러고나니 OK!