Поиск и замена термина в базе данных MySQL - PullRequest
0 голосов
/ 08 марта 2009

Недавно я добавил в наш трекер проблем новый проект Redmine . При создании проекта вы даете ему имя и идентификатор (которые часто совпадают). При создании проекта есть примечание, что вы не можете изменить идентификатор после его установки. По этой причине я был очень осторожен, чтобы выбрать общий идентификатор. К сожалению, я не был достаточно осторожен, и я написал это неправильно! Идентификатор с ошибкой появляется в URL-адресах трекера проблем. Это увидят другие разработчики и другая компания, с которой мы работаем, так что это очень неловкая ошибка.

Так что я ищу предложения о том, как это исправить. Либо для Redmine, либо что-то, что я могу сделать на уровне базы данных (MySQL).

Я уже нашел решение, с которым, вероятно, пойду, но я подумал, что в любом случае стоит спросить здесь. Я надеюсь, что кто-то может предложить более простое решение - возможно, магически однострочное SQL.

Решение, которое я нашел, это this :

  • Дамп базы данных в SQL (используя mysqldump)
  • поиск и замена с помощью sed или текстового редактора
  • пересоздать базу данных из этого SQL.

Спасибо за любые предложения.

Ответы [ 2 ]

4 голосов
/ 11 марта 2009

Оказывается, это было так просто, как:

update `projects` set `identifier` = '[NEWNAME]' where `indentifer` = '[OLDNAME]';
3 голосов
/ 08 марта 2009

Если идентификатор ограничен каким-либо столбцом или набором столбцов, вы можете использовать:

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

Замените текст в квадратных скобках идентификаторами в вашем случае, в зависимости от ситуации.

...