database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 26496 게시물 읽기
No. 26496
백업 후 복원문제 (한글, Duplicate entry)
작성자
박성철(sorisaem)
작성일
2007-03-14 15:07ⓒ
2007-03-14 15:08ⓜ
조회수
4,650

안녕하세요.

새벽까지 설치다가 도저히 안되겠어서 글 올립니다.


사용 db는 mysql 3.23.58 입니다.


회원테이블의 pk로 잡은 아이디 컬럼을 최근 binary로 수정했다가

대소문자 섞인 아이디가 많아 고객들이 불편을 호소하여 다시

binary를 없애려고 했지만, 중복된 키값이 있다하여 수정이

안되었습니다.


그래서 백업받아논 sql문으로 새 테이블에 입력하려고 했습니다만,

역시 duplicate entry 에러가 나서 더이상 진행을 못합니다.


중복된 키가 없음에도 불구하고 한글에 대해서는 이상한 결과를

내더군요. 일례로


select * from member where id = '지현이';


라고 해보면


주현이라는 아이디가 검색이 됩니다. 그래서 지현이라는 아이디를

insert 할 수 없습니다.


캐릭터셋 상태는 다음과 같습니다.


mysql> show variables like 'character%';

| character_set  | latin1

| character_sets | latin1 big5 czech euc_kr gb2312 gbk sjis tis620 ujis dec8 dos

                   german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew

                   win1251 estonia hungarian koi8_ukr win1251ukr greek win1250

                   croat cp1257 latin5


결국 백업을 매일 받지만 무용지물이 되었습니다. 도와주세요.

이 글에 대한 댓글이 총 5건 있습니다.

euc_kr 로 셋팅 해보셔요

team b(teamb)님이 2007-03-14 19:05에 작성한 댓글입니다.
댓글 고맙습니다.

근데 제가 잘 알지 못하기에 다시 여쭙니다.

euc_kr로 설정 하라고 하신게

mysql 콘솔 접속시 --default-character-set 를 지정하는걸

말씀하시는건지요.

덤프 및 리스토어도 --default-character-set 옵션을 써서 euc_kr로

받아서 해봤구요.. 검색해보니 set names 이런 명령은 안먹히더군요.

좀더 상세한 설명 부탁드릴게요.

아 그리고 혹시 캐릭터셋을 변경하게되면 다른 디비내용에도

영향을 미치는지요. 현재 운영중이 사이트라 매우 신경이 쓰입니다.

추신:

찾아봤더니 my.cnf에서 설정해주라고 하는군요.

근데 바꿔도 다른 디비에 이상이 생기지는 않을지요.

참고로 my.cnf 내용입니다.

[client]
port            = 3306
socket          = /tmp/mysql.sock


[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
#set-variable   = key_buffer=384M
#set-variable   = key_buffer=256M
#set-variable   = key_buffer=128M
set-variable    = key_buffer=96M
set-variable    = max_allowed_packet=1M
set-variable    = table_cache=1M
set-variable    = sort_buffer=1M
set-variable    = record_buffer=1M
set-variable    = thread_cache=6
set-variable    = max_connections=100000
set-variable    = max_connect_errors=100
set-variable    = thread_concurrency=4
set-variable    = myisam_sort_buffer_size=64M
set-variable    = wait_timeout=30
#log-bin
server-id       = 1

 

# Point the following paths to different dedicated disks
#tmpdir         = /tmp/
#log-update     = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using BDB tables
#set-variable   = bdb_cache_size=384M
#set-variable   = bdb_max_lock=100000

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/var/
#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/var/
#innodb_log_arch_dir = /usr/local/mysql/var/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#set-variable = innodb_buffer_pool_size=384M
#set-variable = innodb_additional_mem_pool_size=20M
# Set .._log_file_size to 25 % of buffer pool size
#set-variable = innodb_log_file_size=100M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#set-variable = innodb_lock_wait_timeout=50

[mysqldump]
quick
#set-variable   = max_allowed_packet=16M
set-variable    = max_allowed_packet=16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
set-variable    = key_buffer=256M
set-variable    = sort_buffer=256M
set-variable    = read_buffer=2M
set-variable    = write_buffer=2M

[myisamchk]
set-variable    = key_buffer=256M
set-variable    = sort_buffer=256M
set-variable    = read_buffer=2M
set-variable    = write_buffer=2M

[mysqlhotcopy]
interactive-timeout

박성철(sorisaem)님이 2007-03-14 20:01에 작성한 댓글입니다.
이 댓글은 2007-03-14 20:20에 마지막으로 수정되었습니다.

3.23.x 대에선 서버단에서만 지정해주면 됩니다. (한개의 문자셋으로 모두 통일되어 반영됩니다.)

my.ini (또는 my.cnf) 에 mysqld 섹션에 

default-character-set=euc_kr

이렇게 추가해주시면 됩니다.

my.cnf에 보니 문자셋을 지정하는게 없군요. latin1 으로 계속 써오셨다면은...아마 euc_kr로 바꿔도 별 이상 없으리라 봅니다.

참고로 set names 같은것은 4.1 이상에서 지원됩니다.
team b(teamb)님이 2007-03-15 11:49에 작성한 댓글입니다.

댓글 보고 변경하려 하다가 예전에 호스팅업체분과


대화했던 내용이 생각나 잠시 봤는데요.


내용중에 디비 사이즈가 크기 때문에 캐릭터셋 변경은


안하는게 좋겠다는 얘기가 있더군요.


간혹 필드 사이즈에 문제가 생기는 경우가 있다고


하던데요, 어떤 경우에 왜 그런 문제가 생기는지요.


현재 중요디비 디렉토리 크기가 1.5기가쯤 됩니다.


막상 뭔가 하려니 걸리는게 많네요. ㅜ.ㅜ


아이디필드에 binary만 안걸린 같은 테이블 구조에


pk 충돌없이 입력하는 방법은 없는지요.


member 테이블 하나 때문에 골치가 아픕니다 ㅜㅜ

박성철(sorisaem)님이 2007-03-15 13:57에 작성한 댓글입니다.

흠...새로운 데이블에 넣는거라면 인덱스를 없애고 넣으면 어떨까요? 


그리구 디비 사이즈때문에 문자셋 변경을 안하는게 좋다는 문제는...잘 모르겟군요. 그런문제가 있나? 흠...

team b(teamb)님이 2007-03-16 17:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
26499mysql이 안올라옵니다.(root권한관련)
김태경
2007-03-15
1815
26498대용량 데이터 입력시의 myisam도 innodb의 속도차. [4]
이철호
2007-03-15
3570
26497LOAD DATA 사용하면서.. int 타입에 데이타를.... [2]
정천기
2007-03-15
2024
26496백업 후 복원문제 (한글, Duplicate entry) [5]
박성철
2007-03-14
4650
2649464bit 에서 DBD:mysql 설치 해보신분
jindogg
2007-03-14
2131
26493아무리해도 답이 안나옵니다..쿼리고수님부탁드려요 [2]
핼프미
2007-03-14
1996
26491이정도 사용은 DB 과부하가 얼마나 걸리는 정도인지 궁금합니다.
jindogg
2007-03-14
1629
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다