Сравнение структуры таблиц без учета регистрозависимости.

Kitap

Создатель
Заблокирован
Регистрация
1 Июн 2018
Сообщения
23
Реакции
73
  • Автор темы
  • Заблокирован
  • #1
Вредоносная программа или шаловливые руки бывшего админа сайта, или несовместимые компоненты попортили таблицы магазина, то есть имеется несоответствие структур таблиц MySQL.

Пытаюсь сравнить таблицы программой "Navicat Premium".
Скрин, показывает на то что сравнение идет через DDL, очень буквально, даже с учетом регистра комментариев к полю таблицы, что дает на выходе довольно сложный миграционный скрипт, с мягко выражаясь, с не совсем нужными данными. По идее наплевать на комменты к полям таблицы, а у Navicat нету опции на отключение такого сравнения. Кто чем пользуется для создания миграционных скриптов при работе с репозитариями, синхронизацией и т.д. ?

Ну и конечно, из того что можно достать нуленое или бесплатное.
 

Вложения

  • ctructured.png
    ctructured.png
    102,9 KB · Просмотры: 12
А вы сделайте
Код:
SELECT CREATE_TIME, UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'your_schema'
AND table_name = 'your_table'
может что-то интересное поймете.
Думаю, какой-то компонент ставился/обновлялся, и при этом сделал "ALTER TABLE ... MODIFY ... " и поменял DDL.
Есть другие симптомы?
PS
Я схемы сравниваю так на баше:
Код:
mysqldump --routines --events --triggers --no-data test > schema-test.sql
mysqldump --routines --events --triggers --no-data run > schema-run.sql
diff schema-test.sql schema-run.sql
 
Последнее редактирование:
Выгружаете дамп структуры таблицы в файл и делаете сравнение по файлу.
 
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.`COLUMNS` WHERE table_schema='ПЕРВАЯ БД' AND table_name='ПЕРВАЯ ТАБЛ' AND COLUMN_NAME NOT IN (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.`COLUMNS` WHERE table_schema='ВТОРАЯ БД' AND table_name='ВТОРАЯ ТАБЛ')

Это сравнить по наличию имен. Поменяв местами названия таблиц можно сравнить наоборот - вторую с первой. Выдаст все расхождения в именах колонок таблиц. Аналогично можно делать сравнение по типу колонок, но чуть сложнее.
Также можно выгрузить представление таблиц в эксель в две таблицы (два листа или рядом две таблицы) и там построчно формулой просто посравнивать и увидеть расхождения.
 
Назад
Сверху