Допустим, у вас есть рабочая и тестовая базы данных.
В какой-то момент разработчик внес изменения в тестовую базу, но забыл внести эти изменения в боевую.
Если это часто используемая таблица, то ситуация становится очевидной очень быстро, так как в логах появятся ошибки SQL-запросов и вам начнет звонить начальник с упреками «что @#$%».
Но иногда изменения затрагивают редко используемые таблицы, либо изменения не совсем очевидны на первый взгляд (например, кто-то изменил длину поля VARCHAR и у вас стали обрезаться строки, или кто-то добавил индекс, из-за чего запросы по тестовые базы выполняются на порядок быстрее).
Другой вариант - вы обновили ПО и у вас все перестало работать.
Куча непонятных ошибок из ниоткуда, приложение врет, пользователи недовольны.
В таких случаях может быть очень полезно посмотреть, чем различаются базы, и сделать соответствующие выводы.
Что приходит на ум? Дампируем структуру одной базы, потом другой.
Мы запускаем утилиту diff, и она показывает строки, которые различаются в двух дампах.
Для небольших изменений это может сработать.
Но, во-первых, это несколько утомительно, а во-вторых, может получиться ситуация как на скриншоте, когда в одной базе нет таблицы и diff начинает сравнивать разные таблицы.
Столкнувшись с вышеперечисленными проблемами, я написал небольшой PHP-скрипт ( https://github.com/dlevsha/compalex ), который работает с MySQL, MS SQL Server, PostgreSQL (планируется поддержка Oracle) и позволяет сравнивать две базы данных.
Скрипт не влечет за собой никаких зависимостей, что упрощает его установку и поддержку.
Для работы необходимо установить сам скрипт (предполагается, что у вас уже установлен php > =5.4 с поддержкой PDO, если нет, то в debian/ubuntu это делается одной строкой установка aptitude php5 , единственное, нужно убедиться, что версия php не ниже 5.4)
Открытие .$ git clone https://github.com/dlevsha/compalex.git $ cd compalex
среда в папке проекта и отредактируйте параметры.
[ 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 = login
DATABASE_PASSWORD = password
DATABASE_DESCRIPTION = Developer database
[ Secondary connection params ]
DATABASE_HOST_SECONDARY = localhost
DATABASE_NAME_SECONDARY = compalex_prod
DATABASE_USER_SECONDARY = login
DATABASE_PASSWORD_SECONDARY = password
DATABASE_DESCRIPTION_SECONDARY = Production database
Выбор водителя БАЗА ДАННЫХ_ДРАЙВЕР из поддерживаемых «mysql», «pgsql», «dblib»
Редактируем настройки, отвечающие за подключение к первой и второй базе соответственно.
DATABASE_HOST = localhost
DATABASE_NAME = compalex_dev
DATABASE_USER = root
DATABASE_PASSWORD = password
Чтобы не путаться, какая база данных какая, задаем им имена в параметрах БАЗА ДАННЫХ_ОПИСАНИЕ
После этого находясь в папке проекта запустите веб-сервер $ php -S localhost:8000
и откройте его в браузере http://localhost:8000/
Диаграмма сравнения, состоящая из двух столбцов, должна отображаться в соответствии с заданными параметрами базы данных.
Назначение элементов показано на схеме.
Иногда нет возможности организовать прямое локальное подключение к базам данных и изменения нужно просматривать прямо на сервере из консоли.
Для этих целей рекомендую использовать консольный браузер электронные ссылки , который поддерживает форматирование HTML и цвета в разметке.
Вам необходимо установить скрипт на сервер, запустить веб-сервер (как описано выше) и запустить: $ elinks http://localhost:8000
Получаем что-то вроде этого:
Более подробная информация на сайте (на английском языке) http://compalex.net/ .
Здесь вы можете попробовать, как все это работает http://demo.compalex.net/ .
Теги: #MySQL #postgresql #Microsoft SQL Server #oracle #базы данных #разработка баз данных #MySQL #oracle #postgresql
-
Экономьте Деньги На Чернилах Для Принтера
19 Oct, 24 -
Что В Голове У Программиста? Часть 1
19 Oct, 24 -
Будущее Российского Рынка Онлайн-Путешествий
19 Oct, 24 -
Тест Джоэла
19 Oct, 24 -
Launchy - Маленький, Но Очень Полезный!
19 Oct, 24