Если вы уверены, что ни одно из полей, подлежащих обновлению, не будет сериализовано, приведенные выше решения будут работать хорошо.
Однако, если какое-либо из полей, требующих обновления, содержит сериализованные данные, запрос SQL или простой поиск / замена в файле дампа прервет сериализацию (если в замененной строке не будет ровно столько же символов, что и в искомой строке).
Конечно, «сериализованное» поле выглядит так:
a:1:{s:13:"administrator";b:1;}
Количество символов в соответствующих данных кодируется как часть данных.
Сериализация - это способ преобразования «объектов» в формат, легко сохраняемый в базе данных, или простой перенос данных объекта между различными языками.
Вот объяснение различных методов, используемых для сериализации данных объекта, и почему вы, возможно, захотите это сделать, а также публикация, ориентированная на WordPress: Сериализованные данные, что это значит и почему это так важно? простым языком.
Было бы удивительно, если бы в MySQL был какой-то встроенный инструмент для автоматической обработки сериализованных данных, но это не так, и поскольку существуют разные форматы сериализации, для этого даже не имеет смысла делать это.
wp-cli
Некоторые ответы выше казались специфичными для баз данных WordPress, которые сериализуют большую часть своих данных. WordPress предлагает инструмент командной строки, wp search-replace , который делает сериализацию.
Основная команда будет:
wp search-replace 'an-old-string' 'a-new-string' --dry-run
Тем не менее, WordPress подчеркивает, что guid
никогда не следует изменять , поэтому рекомендует пропустить этот столбец.
Это также предполагает, что часто вы захотите пропустить wp_users
стол.
Вот как это будет выглядеть:
wp search-replace 'https://old-domain.com' 'https://shiney-new-domain.com' --skip-columns=guid --skip-tables=wp_users --dry-run
Примечание: я добавил --dry-run
флаг, чтобы копирование-вставка не разрушала чью-либо базу данных автоматически. Убедившись, что скрипт выполняет то, что вы хотите, запустите его снова без этого флага.
Плагины
Если вы используете WordPress, есть также много бесплатных и коммерческих плагинов, которые предлагают графический интерфейс для того же, в комплекте со многими дополнительными функциями.
Interconnect / it php script
Interconnect / предлагает скрипт php для обработки сериализованных данных: инструмент безопасного поиска и замены . Он был создан для использования на сайтах WordPress, но, похоже, его можно использовать в любой базе данных, сериализованной PHP.
Многие компании, включая сам WordPress, рекомендуют этот инструмент. Инструкции здесь, около 3/4 вниз по странице.