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








