Периодически любому разработчику чего-либо приходится сталкиваться с такой вещью, как выявление различий между двумя файлами. С этим замечательно справляется такая утилита как 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
— для базы данных MySQLpgsql
-для базы данных PostgreSQLdblib
-для базы данных Microsoft SQL Server
Секции [ Primary connection params ]
и [ Secondary connection params ]
описывают настройки для первой и второй баз данных.
Где:
DATABASE_HOST
иDATABASE_HOST_SECONDARY
— имя хоста базы данных или его IP адрес для первой и второй базDATABASE_NAME
andDATABASE_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 и увидеть чем одна база отличается от другой.