Якщо ви впевнені, що жодне з полів, що підлягають оновленню, не є серіалізованими, рішення, наведені вище, будуть добре працювати.
Однак якщо будь-яке з полів, яке потребує оновлення, містить серіалізовані дані, SQL-запит або звичайний пошук / заміна в дамп-файлі порушить серіалізацію (якщо тільки замінена рядок не має точно такої ж кількості символів, що і пошуковий рядок).
Напевно, "серіалізоване" поле виглядає приблизно так:
a:1:{s:13:"administrator";b:1;}
Кількість символів у відповідних даних кодується як частина даних.
Серіалізація - це спосіб перетворення "об'єктів" у формат, який легко зберігається в базі даних, або легко транспортувати дані об'єктів між різними мовами.
Ось пояснення різних методів, які використовуються для серіалізації даних об’єктів, і чому ви можете це зробити, і ось публікація, орієнтована на WordPress: Серіалізовані дані, що це означає і чому це так важливо? простою мовою.
Було б дивовижно, якби у MySQL був якийсь вбудований інструмент для автоматичної обробки серіалізованих даних, але це не так, а оскільки існують різні формати серіалізації, це навіть не має сенсу робити.
wp-cli
Деякі відповіді вище здавалися специфічними для баз даних WordPress, яка серіалізує більшу частину своїх даних. WordPress пропонує інструмент командного рядка, Wp пошук заміни , що робить ручки сериализации.
Основною командою було б:
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, є також безліч безкоштовних та комерційних плагінів, які пропонують інтерфейс gui, щоб зробити те саме, упакований з багатьма додатковими функціями.
Interconnect / it php script
Interconnect / він пропонує скрипт php для обробки серіалізованих даних: інструмент безпечного пошуку та заміни . Він був створений для використання на сайтах WordPress, але схоже, що його можна використовувати в будь-якій базі даних, серіалізованій PHP.
Багато компаній, включаючи сам WordPress, рекомендують цей інструмент. Інструкції тут, приблизно на 3/4 вниз на сторінці.