Замена символов в базе данных MySQL - PullRequest
0 голосов
/ 15 декабря 2009

Я перенес большую базу данных phpbb3 из базы данных latin1 в utf-8 Все прошло нормально, теперь мне нужно поменять «странные» символы в базе данных. Вчера я нашел метод, который работал, теперь я не могу его найти, я попробовал:

update phpbb_topics set topic_title = replace(topic_title, 'Ã', 'à');
update phpbb_topics set topic_title = replace(topic_title, 'è', 'è');

В основном мне нужно изменить все символы М в поле таблицы на а и т. Д.

Как вы можете это сделать?

Спасибо

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

update phpbb_topics set topic_title = replace (replace (topic_title, 'è,' è '),' à ',' à ');

Вы должны ответить себе на следующие вопросы:

  • какие двоичные данные хранятся в базе данных (используйте функцию ascii () или SELECT ... INTO DUMPFILE)
  • какие двоичные данные отправляются клиенту (они не всегда совпадают с сохраненными)
  • как ваш клиент показывает полученные двоичные данные? (попробуйте разные клиенты и разные варианты)
0 голосов
/ 15 декабря 2009

Я бы сбросил его в файл .sql и затем заменил символы на sed или текстовый редактор (если файл не слишком большой) После этого вы снова запускаете скрипт. Может быть, есть способ сделать это непосредственно в базе данных, но я этого не знаю.

Проблема моего решения в том, что оно не атомное. Изменения в БД между дампом и перепрошивкой теряются.

Поздравления Раффаэль

...