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 27994 게시물 읽기
No. 27994
mysql 오류나는부분 수정을 어떻게 해야하나요?<초짜라서여>
작성자
김정훈(chozzaphp)
작성일
2009-02-02 16:52ⓒ
2009-02-02 17:19ⓜ
조회수
11,221

MySQL 메시지: 

#1170 - BLOB/TEXT column 'category' used in key specification without a key length 


위와같은에러로 복구가 안됩니다 
어느부분을 수정해야하는지 좀 알려주세요 ㅡㅡ;

그런데 이상한건 예전서버에선 문제없었거든요
이 쿼리가 mysql버전에따라서 에러가 생길수도 안생길수도있는건가요?


참고로 초짜입니다 ㅡㅡ';

그리고 수정할부분을
editplus로 수정을하고나서 서버에 올리고 mysql명령어로 복구시켜도 문제없는지도 좀 알려주세요 ;;



SQL 질의:

CREATE TABLE expand_market_data( 

uid
int( 11 ) NOT NULL AUTO_INCREMENT ,
gtype int( 1 ) NOT NULL ,
gid int( 10 ) NOT NULL ,
id varchar( 12 ) NOT NULL ,
category text NOT NULL ,
display int( 1 ) NOT NULL ,
name text NOT NULL ,
op_1_name varchar( 100 ) NOT NULL ,
op_1_value varchar( 200 ) NOT NULL ,
op_2_name varchar( 100 ) NOT NULL ,
op_2_value varchar( 200 ) NOT NULL ,
op_3_name varchar( 100 ) NOT NULL ,
op_3_value varchar( 200 ) NOT NULL ,
op_4_name varchar( 100 ) NOT NULL ,
op_4_value varchar( 200 ) NOT NULL ,
op_5_name varchar( 100 ) NOT NULL ,
op_5_value varchar( 200 ) NOT NULL ,
op_6_name varchar( 100 ) NOT NULL ,
op_6_value varchar( 200 ) NOT NULL ,
op_7_name varchar( 100 ) NOT NULL ,
op_7_value varchar( 200 ) NOT NULL ,
kind varchar( 100 ) NOT NULL ,
use_format varchar( 100 ) NOT NULL ,
use_tool varchar( 100 ) NOT NULL ,
use_size int( 10 ) NOT NULL ,
use_fixel varchar( 20 ) NOT NULL ,
price1 int( 8 ) NOT NULL ,
price2 int( 8 ) NOT NULL ,
point int( 7 ) NOT NULL ,
ha_term varchar( 200 ) NOT NULL ,
ha_rebuy int( 8 ) NOT NULL ,
downfile varchar( 100 ) NOT NULL ,
demo_user varchar( 200 ) NOT NULL ,
demo_admin varchar( 200 ) NOT NULL ,
photo text NOT NULL ,
upfolder varchar( 30 ) NOT NULL ,
updir varchar( 100 ) NOT NULL ,
upfiles text NOT NULL ,
html varchar( 4 ) NOT NULL ,
content1 mediumtext NOT NULL ,
review text NOT NULL ,
headcode text NOT NULL ,
tailcode text NOT NULL ,
searchstr varchar( 200 ) NOT NULL ,
hit int( 7 ) NOT NULL ,
wish int( 7 ) NOT NULL ,
cart int( 7 ) NOT NULL ,
panmae int( 7 ) NOT NULL ,
score1 int( 7 ) NOT NULL ,
score2 int( 7 ) NOT NULL ,
date1 varchar( 8 ) NOT NULL ,
date2 varchar( 8 ) NOT NULL ,
aply_site text NOT NULL ,
PRIMARY KEY ( uid ) ,
KEY gtype( gtype ) ,
KEY gid( gid ) ,
KEY id( id ) ,
KEY category( category ) ,
KEY display( display ) ,
KEY kind( kind ) ,
KEY use_format( use_format ) ,
KEY use_tool( use_tool ) ,
KEY use_size( use_size ) ,
KEY price1( price1 ) ,
KEY price2( price2 ) ,
KEY point( point ) ,
KEY searchstr( searchstr ) ,
KEY hit( hit ) ,
KEY wish( wish ) ,
KEY cart( cart ) ,
KEY panmae( panmae ) ,
KEY score1( score1 ) ,
KEY score2( score2 ) ,
KEY date1( date1 ) ,
KEY date2( date2 ) ,
KEY aply_site( aply_site )

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

안녕하세요 

아래 글을 남겨뒀는데 아직 읽어보시지 못하신듯 하여 다시 남깁니다. 

먼저 

1. 쿼리 에러부분은
기본적으로 mysql은 BLOB타입과 TEXT타입은 index를 생성하지 못합니다. 
헌데 작성하신 CREATE 문에서는 아래 category 컬럼에서 index를 생성하고 있습니다. 

2. dump 파일 수정 부분
기본적으로 dump파일은 SQL QUERY 집합체입니다. dump 옵션을 어떻게 주셨는지는 모르겟으나, 
안에 작성된 쿼리는 수정하여도 무방합니다. 단, 저장할때 캐릭터셋을 주의하셔서 하셔야지 한글깨짐현상을 미연에 방지할 수 있습니다. 



그럼 이만 ^^

박성원(darkancia)님이 2009-02-02 17:54에 작성한 댓글입니다.

박성원님 답변감사드립니다


그런데 제가 초짜라서여 답변감사드리는데요 

도와주신점 감사하게생각합니다

그런데 좀 구체적으로 어떻게 수정하면 

사용가능한지 구체적으로 좀 지적해주심 감사할게요^^"

초짜라는점 양해부탁합니다



^^:


말씀하신부분====>


1. 쿼리 에러부분은

기본적으로 mysql은 BLOB타입과 TEXT타입은 index를 생성하지 못합니다. 

헌데 작성하신 CREATE 문에서는 아래 category 컬럼에서 index를 생성하고 있습니다





그런데 구체적으로 어떻게 수정하라고 좀 지적좀부탁합니다 ^^":




김정훈(chozzaphp)님이 2009-02-02 19:47에 작성한 댓글입니다.

아마 예전에 사용하시던 MySQL 구버전 서버에서는, 경고/에러를 출력하지 않았을 뿐, 실제로는 현재의 MyISAM과 같이 1000 바이트만 인덱스 키로 사용하고 있었을겁니다.

 

BLOB/TEXT와 같이 큰 컬럼에 키를 생성할 때는, 컬럼 이름 뒤에 ( 1000 )과 같이 키 길이 제한자를 추가로 적어주셔야 합니다. 제가 사용하고 있는 5.0.32에서는 1000바이트로 제한되어 있군요. 다른 버전도 크게 차이가 없으리라 생각합니다.

 

적어준 테이블 생성 구문에서는 KEY category( category ) 대신에 KEY category ( category ( 1000 ) ) 과 같이 적어주시면 되리라 생각됩니다. 하지만 위와 같이 전략 없이 인덱스만 많이 설정하시면 오히려 성능을 떨어트리고, 용량을 과도하게 사용하는 원인이 됩니다. 필요한 컬럼에 적절히 사용하는 전략이 요구됩니다.

박현우(lqez)님이 2009-02-02 23:57에 작성한 댓글입니다.
이 댓글은 2009-02-02 23:59에 마지막으로 수정되었습니다.

헛... 


현우님이 답변 주셨네요 ^^


제가 알기로는 index 생성 자체가 안되는것으로 알고있었는데요

현우님 말씀처럼 BLOB와 TEXT에는 인덱스를 사용하지것이 좋습니다. 기본적으로 많은 문자열이 들어가는 컬럼에서 인덱스 생성하는것 자체가 모순이라고 생각되네요 


오늘도 현우님 덕분에 하나 배우고 가네요 ^^*



즐거운 하루되세요 ^^

박성원(darkancia)님이 2009-02-03 09:37에 작성한 댓글입니다.

먼저 박현우님 박성원님 답변감사드립니다
박현우님 답글보고 친절한설명대로
category ( category ( 1000 ) 해보았읍니다..
이건 문제가 없는거같은데 또 다른에러가 발생하네요
 밑에와처럼 에러가 나네요

그런데 이쿼리가 제가 작성한 쿼리가 아니고요 
솔루션몰쿼리인데요
이상하네요 ㅡㅡ'
왜자꾸에러가나는지..


 

MySQL 메시지: 

#1170 - BLOB/TEXT column 'aply_site' used in key specification without a key length 






CREATE TABLE expand_market_data( 

uid int( 11 ) NOT NULL AUTO_INCREMENT ,
gtype int( 1 ) NOT NULL ,
gid int( 10 ) NOT NULL ,
id varchar( 12 ) NOT NULL ,
category text NOT NULL ,
display int( 1 ) NOT NULL ,
name text NOT NULL ,
op_1_name varchar( 100 ) NOT NULL ,
op_1_value varchar( 200 ) NOT NULL ,
op_2_name varchar( 100 ) NOT NULL ,
op_2_value varchar( 200 ) NOT NULL ,
op_3_name varchar( 100 ) NOT NULL ,
op_3_value varchar( 200 ) NOT NULL ,
op_4_name varchar( 100 ) NOT NULL ,
op_4_value varchar( 200 ) NOT NULL ,
op_5_name varchar( 100 ) NOT NULL ,
op_5_value varchar( 200 ) NOT NULL ,
op_6_name varchar( 100 ) NOT NULL ,
op_6_value varchar( 200 ) NOT NULL ,
op_7_name varchar( 100 ) NOT NULL ,
op_7_value varchar( 200 ) NOT NULL ,
kind varchar( 100 ) NOT NULL ,
use_format varchar( 100 ) NOT NULL ,
use_tool varchar( 100 ) NOT NULL ,
use_size int( 10 ) NOT NULL ,
use_fixel varchar( 20 ) NOT NULL ,
price1 int( 8 ) NOT NULL ,
price2 int( 8 ) NOT NULL ,
point int( 7 ) NOT NULL ,
ha_term varchar( 200 ) NOT NULL ,
ha_rebuy int( 8 ) NOT NULL ,
downfile varchar( 100 ) NOT NULL ,
demo_user varchar( 200 ) NOT NULL ,
demo_admin varchar( 200 ) NOT NULL ,
photo text NOT NULL ,
upfolder varchar( 30 ) NOT NULL ,
updir varchar( 100 ) NOT NULL ,
upfiles text NOT NULL ,
html varchar( 4 ) NOT NULL ,
content1 mediumtext NOT NULL ,
review text NOT NULL ,
headcode text NOT NULL ,
tailcode text NOT NULL ,
searchstr varchar( 200 ) NOT NULL ,
hit int( 7 ) NOT NULL ,
wish int( 7 ) NOT NULL ,
cart int( 7 ) NOT NULL ,
panmae int( 7 ) NOT NULL ,
score1 int( 7 ) NOT NULL ,
score2 int( 7 ) NOT NULL ,
date1 varchar( 8 ) NOT NULL ,
date2 varchar( 8 ) NOT NULL ,
aply_site text NOT NULL ,
PRIMARY KEY ( uid ) ,
KEY gtype( gtype ) ,
KEY gid( gid ) ,
KEY id( id ) ,
KEY category( category( 1000 ) ) ,
KEY display( display ) ,
KEY kind( kind ) ,
KEY use_format( use_format ) ,
KEY use_tool( use_tool ) ,
KEY use_size( use_size ) ,
KEY price1( price1 ) ,
KEY price2( price2 ) ,
KEY point( point ) ,
KEY searchstr( searchstr ) ,
KEY hit( hit ) ,
KEY wish( wish ) ,
KEY cart( cart ) ,
KEY panmae( panmae ) ,
KEY score1( score1 ) ,
KEY score2( score2 ) ,
KEY date1( date1 ) ,
KEY date2( date2 ) ,
KEY aply_site( aply_site )

)
김정훈(chozzaphp)님이 2009-02-03 12:44에 작성한 댓글입니다.
이 댓글은 2009-02-03 12:59에 마지막으로 수정되었습니다.

같은내용의 에러이네요 

KEY aply_site( aply_site ) --> KEY aply_site( aply_site(1000) )

으로 수정하시면됩니다. 



그럼 좋은하루 되시길..

박성원(darkancia)님이 2009-02-03 15:59에 작성한 댓글입니다.

제가 초짜라서여^^;
하나를 가리켜주면 다음하나는 제가 알아야될텐데 ㅡㅡ;
여하튼 친절하게 가리켜주셔서 정말감사합니다^^
박성원님 답변감사드립니다
^^

항상 행복과 행운이함께하시길 바래봅니다~^^


김정훈(chozzaphp)님이 2009-02-03 16:34에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27997테이블 스토리지 엔진을 모두 InnoDB로 선택해도 문제 없을까요? [2]
김승동
2009-02-03
5370
27996table join 시 난해한 쿼리 작성... [1]
이민호
2009-02-03
5039
27995문자열 분리 및 행과 열 바꾸기 [7]
초보
2009-02-03
7019
27994mysql 오류나는부분 수정을 어떻게 해야하나요?<초짜라서여> [7]
김정훈
2009-02-02
11221
27993mysql데이터 삭제하여도 번호가 이여져서 나와요...ㅠㅠ [3]
허점강
2009-02-02
5392
27992mysql 에러가나도 강제로 복구시키는방법은없나요?[초짜에여] [1]
김정훈
2009-02-02
7448
27991Limit 명령어 질문이요. [1]
박지훈
2009-02-01
4703
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다