В очередной раз разбираясь с глюками при апгрейде очередной версии OpenCart 2 и поиске причин возникновения ошибок пришла идея сравнить структуры баз.
Сравнить надо было структуры двух баз - обновленную с раббочими данными и структуру базы установленной "с нуля". Таблиц в базе много и переключать просмотр между страничками с открытыми phpMySQL крайне неэффективно.
Погуглив, нашел пару вариантов вариантов более прогрессивного решения вопроса:
- прежде всего это платные и шароварные утилиты.
- простое сравнение стуктур в текстовом режиме программами, умеющими сравнивать файлы и способными показывать отличия.
В первом варианте утилиты, помимо сравнения могут делать массу полезного, например генерировать файл отличий и команд для коррекции структуры, различные diff-ы. Например, www.devart.com или SchemaSync для mysql.
Второй вариант мне больше подходил, тем более, что обе базы были размещены на локальном сервере.
Я нашел в папке локального сервера утилиту-дампер :
\openserv\OpenServer\modules\database\MySQL-5.5\bin\mysqldump.exe
и запустил его дважды с разными параметрами для баз lb21 и lb2 :
mysqldump -d -u root -p lb21 > _lb21_stru.sql
mysqldump -d -u root -p lb2 > _lb2_stru.sql
В файлы _lb21_stru.sql и _lb2_stru.sql были выгружены структуры баз.
Далее нам нужна программа построчного сравнения и показа различий. Тут тоже есть выбор из автономных уталит - TextDiff, WinMerge. Но поскольку я плотно рабботаю с редактором notepad++, то оказалось для него есть плагин сравнения файлов.
Скачиваем плагин к Notepad++ с сервера sourceforge.net
Плагин распаковываем и помещаем DLL-файл в папку plugins редактора.
Затем открываем оба файла в редакторе. Открытые файлы должны быть последними (самыми правыми) в закладках открытых файлов в редакторе и выбираем пункты меню "Плагины" - Compare - Compare.
Плагин выполнит сравнение наших файлов дампов структуры и покажет их в удобном для сравнения виде, выделяя различия цветом и специальными знаками-маркерами слева от каждой строки.
Кстати, плагин весьма хорош и для сравнения других типов файлов, например, можно сравнивать php-файлы от различных версий Опенкарт и его модулей.