在MySQL数据库中搜索并替换术语
我最近在我们的问题跟踪程序中添加了一个新项目,即。创建项目时,您为其指定的名称和标识符通常相同。创建项目时需要注意的是,一旦设置了标识符,就不能更改它。出于这个原因,我非常小心地选择了一个通用标识符。不幸的是,我不够小心,把它拼错了!拼写错误的标识符出现在问题跟踪程序URL中。其他开发者和我们合作的另一家公司将会看到这些,所以这是一个非常令人尴尬的错误 因此,我正在寻找关于如何解决这个问题的建议。要么是特定于Redmine的,要么是我可以在数据库级别(MySQL)执行的操作 我已经找到了一个解决方案,我可能会去,但我认为这将是值得问在这里无论如何。我希望有人能提供一个更简单的解决方案——也许是一个神奇的SQL单行程序 我找到的解决方案是: 使用mysqldump将数据库转储到SQL 搜索并替换为sed或文本编辑器 从此SQL重新创建数据库。在MySQL数据库中搜索并替换术语,mysql,redmine,Mysql,Redmine,我最近在我们的问题跟踪程序中添加了一个新项目,即。创建项目时,您为其指定的名称和标识符通常相同。创建项目时需要注意的是,一旦设置了标识符,就不能更改它。出于这个原因,我非常小心地选择了一个通用标识符。不幸的是,我不够小心,把它拼错了!拼写错误的标识符出现在问题跟踪程序URL中。其他开发者和我们合作的另一家公司将会看到这些,所以这是一个非常令人尴尬的错误 因此,我正在寻找关于如何解决这个问题的建议。要么是特定于Redmine的,要么是我可以在数据库级别(MySQL)执行的操作 我已经找到了一个解决
感谢您的建议。如果标识符仅限于某列或某组列,您可以使用:
update [table] set [field] = replace([field],'[find]','[replace]');
将括号中的文本替换为您案例中的标识符(视情况而定)。结果表明,它非常简单:
update `projects` set `identifier` = '[NEWNAME]' where `indentifer` = '[OLDNAME]';
我建议这样做,而不是做垃圾桶。只需确保替换所有表中的每个实例。标识符只存储在一个位置,但用于生成URL,因此它出现在UI的多个位置。我建议这种方法用于拼写错误或非公共项目。更改标识符将破坏任何非Redmine URL,例如搜索结果、来自第三方网站的深度链接。。。