我正在尝试对数据库进行批量替换,以将英式单词翻译成美式单词。我有大量的单词要替换,还有一系列不同的表格要运行。我遇到了以下线程,它似乎提供了我所需要的东西,但是在尝试时我遇到了错误。
这是我遇到的错误。
Exception caught: exception 'PDOException' with message
'SQLSTATE[HY000]: General error: 1436 Thread stack overrun:
10816 bytes used of a 131072 byte stack, and 128000 bytes needed.
Use 'mysqld -O thread_stack=#' to specify a bigger stack.' in /var/.../....php:303
Stack trace: #0 /var/.../....php(303): PDOStatement->execute(Array) #1 {main}
我在这个答案中使用自定义的 MySQL 函数并生成一个看起来像这样的查询;
UPDATE field_data_body SET body_value = case_insensitive_replace(body_value, :british, :american)
我正在使用以下内容来处理 PDO;
$query = $db->prepare($sql);
try {
$query->execute($sql_fields_array);
} catch (PDOException $e) {
echo "Exception caught: $e";
}
$sql_fields_array
数组看起来像这样;
Array ( [british] => acclimatise [american] => acclimate )
我已经测试了更改自定义函数的名称以确保我正确地创建了它,但我确实收到了一个错误,说函数名称不存在。所以至少我尝试过的那部分是正确的。
最初我使用replace(lower(body_value), :british, :american)
来进行搜索和替换,但是这随后将所有内容更改为小写,这不是我想要的。
有这个错误的任何想法?或者,如果实际上有更好的方法,我可以自动执行批量搜索和替换。