如何替换大型MySQL表中的单个字符

Jin*_*inx 4 mysql joomla collation character-encoding

我将joomla从1.0升级到1.5时遇到了一些问题(我必须一直到1.7;).

无论如何,我的客户端有一个旧的joomla 1.0安装程序,该网站是用克罗地亚语进行的.这意味着我必须处理像Č,č,Ć,ć,Đ,đ这样的人物...旧数据库在latin1_swedish_ci校对中,我已经将它与迁移脚本一起转移到了utf8_general_ci中的joomla 1.5的新数据库.

这导致(如预期的那样)在一些人格混乱中,例如:ć成为è,È - >Č等......

将1.0数据库转换为utf8排序规则不是一种选择,因为它会在第一次出现Č,ć,đ,đ等时切断剩余的内容.

所以,我正在做的是这个查询:

update jos_content
    set introtext = replace(introtext, 'È', '?');
Run Code Online (Sandbox Code Playgroud)

这样做是获取joomla内容表,并在所有介绍文本中用Č替换È.

我也为标题做了这个,但是当我尝试使用全文时,我得到了这个错误:

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
Run Code Online (Sandbox Code Playgroud)

那么,这是某种内存问题(因为这毕竟是全文)或者我只是做错了什么.另外,如果有更好的方法来替换所有这些字符请告诉我,这是我从MySQL"不可读"的文档中找到的.

JK.*_*JK. 6

FULLTEXT是mysql中的保留字,如果您的列名具有相同的名称,则需要通过后面的刻度(`)进行转义.

UPDATE jos_content SET `FULLTEXT` = REPLACE(introtext, 'È', '?');
Run Code Online (Sandbox Code Playgroud)