2012-01-03 9 views
4

joomlaを1.0から1.5にアップグレードする際にいくつかの問題がありました(私は1.7まで進めなければなりません)。大きなMySQLテーブルの1文字を置き換える方法

とにかく、私のクライアントには古いjoomla 1.0がインストールされていて、そのサイトはクロージング語であり、サイトはハッジです。これは、私がČ、č、Ć、ć、Đ、đのような文字を扱わなければならないことを意味します。古いデータベースはlatin1_swedish_ciの照合順序にあり、移行スクリプトを使ってjoomla 1.5の新しいデータベースutf8_general_ciに転送しました。例えばので、いくつかの文字の混乱の中で(予想通り)結果

: CはE、Eになった - > C、等... UTF8照合に1.0データベースを変換

はオプションではありません、以来、これは何

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

が取得することです:それは...だから

。©など、C、C、DJ、の最初の外観上のコンテンツの残りの部分をカットし、私がやったことは、このクエリです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の "unreadable"ドキュメントから分かったことです。

+0

はまた、コピーエラーに注意してください。ありがとうございました、LOL –

答えて

6

FULLTEXTはmysqlでreserved wordであり、カラム名が同じ場合はバックティック( `)でエスケープする必要があります。 (?)

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

...、 '= REPLACE(\'全文\ '\のSET \'全文を、私は完全にフルテキストが予約語であることを忘れてしまいました。 – Jinx

関連する問題