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

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

Периодически любому разработчику чего-либо приходится сталкиваться с такой вещью, как выявление различий между двумя файлами. С этим замечательно справляется такая утилита как 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 и увидеть чем одна база отличается от другой.

Изображение 1

Оцените статью
( Пока оценок нет )
Блог админа