Intereting Posts
Пользовательские стили CSS-администратора для стилирования медиа-загрузчика? Подключить формы в WP к внешней базе данных Как вы можете быть уверены, что записи авторов более 250 слов? Массовое обновление всех сообщений с экрана настроек плагина бесконечная прокрутка для 2 контейнеров с фиксированной высотой Лучшая практика для повторного использования данных API в WordPress? Загрузка файла в удаленное хранилище Как показать / скрыть таксономию, основанную на выборе типа публикации Предупреждение: urlencode () ожидает, что параметр 1 будет строкой, заданный массив Возможности WordPress и ограниченный доступ к категориям add_filter to_content из функции плагина Несколько классов тела CSS для определенных идентификаторов страниц – это возможно? WordPress переписать – заменить пул типа сообщения с соответствующими терминами Меню виджетов не отображается под «Внешний вид» на панели управления Переадресация соединений WordPress на порт 8080 до 80

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

В настоящее время я использую сценарий дампа и передаю базу данных в репозиторий 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