2012-01-03 1 views
4

joomla를 1.0에서 1.5로 업그레이드 할 때 몇 가지 문제점이있었습니다 (1.7까지 진행해야합니다).큰 MySQL 테이블에서 단일 문자를 대체하는 방법

어쨌든 제 클라이언트에는 joomla 1.0 설치가 있고 사이트는 크로아티아어로되어 있습니다. 즉, Č, č, Ć, ć, Đ, đ와 같은 문자를 처리해야한다는 의미입니다. 기존 데이터베이스는 latin1_swedish_ci 데이터 정렬에 있으며, 이전 스크립트로 joomla 1.5의 새로운 데이터베이스 인 utf8_general_ci로 이전했습니다. 그래서 예를 들면, 일부 문자 혼란 (예상대로) 결과

: C는 è되었다 È -> C, 등 ...

이 UTF8 데이터 정렬 1.0 데이터베이스를 변환하기 때문에, 옵션이 아니다 이것은 무엇을

update jos_content 
    set introtext = replace(introtext, 'È', 'Č'); 

가 얻을 수 있습니다 : 그것은 ... 그래서

đ 등 C, C, đ의 첫 등장에있는 콘텐츠의 나머지 부분을 차단, 내가 무엇을하고 있었하면이 쿼리입니다 joomla 내용 표 및 모든 소개 텍스트에서 È를 Č로 바꿉니다.

나뿐만 아니라 제목이했다,하지만 난 전체 텍스트와 그것을 할 때, 나는이 오류 얻을 : SO

Error 
SQL query: 

UPDATE jos_content SET FULLTEXT = REPLACE(introtext, 'È', 'Č') ; 


MySQL said: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fulltext = replace(introtext, 'È', 'Č')' at line 2 

을,이 메모리 문제가 어떤 종류의 (이 전체 텍스트이기 때문에입니다 결국) 또는 나는 단지 뭔가 잘못하고있다. 또한,이 모든 문자를 대체하는 더 좋은 방법이 있다면, 이것이 MySQL의 "읽을 수없는"문서에서 알아 낸 것입니다.

+0

또한 복사 오류주의 (?) : SET의 \ '전체 텍스트 \을'= REPLACE (\'전체 텍스트 \', ... –

답변

6

FULLTEXT은 mysql에서 reserved word이며, 열 이름이 같은 경우 뒤로 틱 (`)으로 이스케이프 처리해야합니다.

UPDATE jos_content SET `FULLTEXT` = REPLACE(introtext, 'È', 'Č'); 
+1

는 LOL, 대단히 감사합니다, 나는 완전히 그 전체 텍스트는 단어를 예약되어 깜빡입니다. – Jinx