搜索并替换MySQL数据库中的术语

时间:2009-03-08 03:05:39

标签: mysql redmine

我最近在我们的问题跟踪器中添加了一个新项目,即Redmine。创建项目时,为其指定名称和标识符(通常是相同的)。创建项目时有一个注释,一旦设置了标识符就无法更改标识符。出于这个原因,我非常谨慎地选择通用标识符。不幸的是,我不够小心,拼错了!拼写错误的标识符显示在问题跟踪器URL中。这些将被其他开发商和我们正在合作的另一家公司看到,所以这是一个非常尴尬的错误。

所以我正在寻找如何解决这个问题的建议。 Redmine特定的,或者我可以在数据库级别(MySQL)做的事情。

我已经找到了一个我可能会使用的解决方案,但我认为无论如何都值得问这个问题。我希望有人可以提供一个更简单的解决方案 - 也许是一个神奇的SQL单行。

我找到的解决方案是this

  • 将数据库转储到SQL(使用mysqldump)
  • 使用sed或文本编辑器搜索和替换
  • 从此SQL重新创建数据库。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:4)

事实证明它很简单:

update `projects` set `identifier` = '[NEWNAME]' where `indentifer` = '[OLDNAME]';

答案 1 :(得分:3)

如果标识符仅限于某些列或列集,则可以使用:

update [table] set [field] = replace([field],'[find]','[replace]');

根据情况,将带括号的文本替换为您的案例中的标识符。