Компьютерное

Сравнение структур двух баз данных

Периодически любому разработчику чего-либо приходится сталкиваться с такой вещью, как выявление различий между двумя файлами. С этим замечательно справляется такая утилита как diff или её GUI аналоги. Однако бывает так, что из-за спешки, недогляда, недосыпа, и просто лени разработчик вносит изменения в тестовую базу данных и потом не может вспомнить что именно он делал, а совместить с базой данных в продакшене надо. Первое что приходит на ум — сделать дампы обоих БД и сделать по ним diff. Однако если в тестовую БД были внесены новые таблицы, то diff собьется и начнет сравнивать уже разные таблицы. Небольшой гуглинг навел меня на замечательную бесплатную утилиту которая работает с MySQL, PostgreSQL, MSSQL, написана на php и замечательно запускается со встроенного в php сервера. Это Compalex.

Установка Compalex.

git clone https://github.com/dlevsha/compalex.git
cd compalex

Настройка Compalex

Далее нужно настроить подключение к тестовой и продакшен базам. Настройка выполняется в файле .environment

[ Main settings ]
; Possible DATABASE_DRIVER: 'mysql', 'pgsql', 'dblib'.
; Please use 'dblib' for Microsoft SQL Server
DATABASE_DRIVER = mysql
DATABASE_ENCODING = utf8
SAMPLE_DATA_LENGTH = 100

[ Primary connection params ]
DATABASE_HOST = localhost
DATABASE_NAME = compalex_dev
DATABASE_USER = root
DATABASE_PASSWORD =
DATABASE_DESCRIPTION = Developer database

[ Secondary connection params ]
DATABASE_HOST_SECONDARY = localhost
DATABASE_NAME_SECONDARY = compalex_prod
DATABASE_USER_SECONDARY = root
DATABASE_PASSWORD_SECONDARY =
DATABASE_DESCRIPTION_SECONDARY = Production database

В этом файле

DATABASE_DRIVER — указываем драйвер БД. Возможные значения:

  • mysql — для базы данных MySQL
  • pgsql -для базы данных PostgreSQL
  • dblib -для базы данных Microsoft SQL Server

Секции [ Primary connection params ] и [ Secondary connection params ] описывают настройки для первой и второй баз данных.

Где:

  • DATABASE_HOST и DATABASE_HOST_SECONDARY — имя хоста базы данных или его IP адрес для первой и второй баз
  • DATABASE_NAME and DATABASE_NAME_SECONDARY — имя первой и второй базы данных
  • DATABASE_USER / DATABASE_PASSWORD и DATABASE_USER_SECONDARY / DATABASE_PASSWORD_SECONDARY — логи и пароль для доступа к базам данных
  • DATABASE_DESCRIPTION и DATABASE_DESCRIPTION_SECONDARY — описание сервера (не обязательно). Только для информации. Это описание будет показано как название базы данных.

Запуск Compalex

Внутри директории complalex выполняем:

php -S localhost:8000

Теперь можете открыть в вашем браузере адрес http://localhost:8000 и увидеть чем одна база отличается от другой.

Mirivlad

Скромный труженик консоли и окошек.

Share
Published by
Mirivlad

Recent Posts

Как вернуть доступ к аккаунту VK (ВКонтакте)?

Восстановить доступ к странице ВКонтакте можно относительно просто. И для этого даже не потребуется помощь…

1 год ago

Реверс-инжиниринг электроники и ПО

Реверс инжиниринг электроники и программного обеспечения — увлекательная и важная дисциплина, играющая ключевую роль в…

3 года ago

Что лучше Apple iPhone 14 или iPhone 13: сравниваем модели

Рынок смартфонов не стоит на месте и каждый год пополняется новыми моделями. Компания Apple традиционно…

3 года ago

Как открыть интернет-магазин с нуля в 2026 году?

Запуск онлайн-бизнеса может показаться сложной задачей, но на самом деле этот процесс можно существенно упростить,…

3 года ago

Как проверить текст на уникальность?

Если Вы хотите продвинуть свой сайт в поисковых системах, одним из самых важных аспектов является…

3 года ago

ТОП лучших смартфонов Samsung 2026 года: рейтинг по цене и качеству

Корейская компания Samsung зарекомендовала себя на потребительском рынке как производитель флагманов, так и бюджетных смартфонов.…

3 года ago