Intereting Posts
Отключить доступ WordPress к WordPress.org для проверки обновлений Пользовательский поиск WordPress – разбиение на страницы Как отображать только последнюю запись на моей домашней странице, сохраняя при этом правильные плагины? Использование существующего кода виджетов! Как подключить разные CPT вместе? API Google Maps в WordPress Можно ли дать пользователю возможность выбрать между двумя отдельными файлами шаблонов для использования в сообщении? Отключить категорию RSS-каналов в блоге WordPress с помощью PHP Показать специальное содержимое для определенных ролей Исключение персонализированного типа сообщения с определенным тегом, использующим pre_get_posts Крючки ActionScript для WordPress и идентификатор сообщения? Какова функция внутренней конкатенации для создания Excerpts с помощью WordPress? Сделайте текстовую статью (для удобства чтения на мобильном телефоне) Типы сообщений типа Tumblr для WordPress Как разбить существующий блог на WordPress Multisites без разрыва ссылок?

Решение для контроля версий и развертывания базы данных?

В настоящее время я использую сценарий дампа и передаю базу данных в репозиторий git. --skip-extended-insert --skip-comments --skip-dump-date означает, что diff может дать мне справедливое представление о том, что изменилось, но все это падает, если я пытаюсь слиться.

WP_SITEURL, WP_HOME и все остальные места wordpress хранят полные URL-адреса, которые необходимо обновлять при импорте на другой хост (тестирование, постановка, производство)

Кто-нибудь использует лучший метод?

Главные проблемы:

  • WordPress хранит полные URL-адреса всей базы данных (не переносные)
  • Изменилось множество других, не относящихся к делу записей
    • auto_increment значения (я просто снимаю их, но столкнулся с проблемами с идентификаторами)
    • временные метки (также могут быть исключены)
    • переходные * записи … не знаю, что с ними делать

Процесс, который создал timestamped миграции, только с добавленными или удаленными вещами, был бы идеальным … но я не уверен, что это даже возможно?

Solutions Collecting From Web of "Решение для контроля версий и развертывания базы данных?"

Вот два возможных решения, оба из которых являются фактически универсальными средствами управления версиями MySQL, но могут быть адаптированы к вашему рабочему процессу:

dbv.php

Этот инструмент создает «миграции», которые в основном являются SQL-скриптами, из изменений, обнаруженных в базе данных. Эти скрипты хранятся в локальном каталоге и, таким образом, могут быть отправлены на ваш текущий VCS (например, git).

Он используется через веб-интерфейс PHP.

DBVC

В основном аналогично предыдущему инструменту, это основано на интерфейсе командной строки. Он настроен через json-файл. Основное различие заключается в том, что он не автоматически генерирует файлы миграции.

Есть нерешенный вопрос, чтобы интегрировать это с предыдущим подобным, так что это то, что нужно искать.

Плагины для WordPress

Некоторые плагины, которые могут помочь в создании повторяемого рабочего процесса:

  • VersionPress (еще в начале разработки на эту дату)
  • WP Migrate DB (есть версия pro )
  • WP Synch DB (вилка предыдущего проекта с некоторыми включенными функциями pro)

Я делаю это на MYSQL.

Он помещает все схемы таблиц и данные в свой собственный файл, чтобы я мог легко видеть, что изменилось.

В отличие от большинства других решений в этом потоке это решение получает данные, что важно для CMS.

Это решение не использует никаких инструментов, просто скрипт командной строки.

edit: Я обнаружил, что у моего более старого кода была ошибка, когда импортный порядок был важен. --compact флага --compact исправляет ошибку.

 for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do echo exporting $x mysqldump -u root -ppassword --skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset --extended-insert=FALSE --replace --skip-dump-date dbname $x > "./db/$x.sql" done 

Старый код

 for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do mysqldump -u root -ppassword --compact --extended-insert=FALSE --replace dbname $x > "./db/$x.sql" done 

и вот как импортировать

 for x in `ls ./db/*.sql`; do echo importing $x mysql -pdbpassword dbname --force < $x done