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

Тема в разделе "Базы данных", создана пользователем Kitap, 9 июл 2018.

Метки:
Модераторы: latteo
  1. Kitap

    Kitap Создатель

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

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

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

    Вложения:

    • ctructured.png
      ctructured.png
      Размер файла:
      102,9 КБ
      Просмотров:
      11
  2. Black Hat

    Black Hat

    Регистр.:
    15 май 2015
    Сообщения:
    166
    Симпатии:
    111
    А вы сделайте
    Код:
    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
    
     
    Последнее редактирование: 10 июл 2018
    latteo нравится это.
  3. tolik1313

    tolik1313 Писатель

    Регистр.:
    12 окт 2018
    Сообщения:
    6
    Симпатии:
    0
    Выгружаете дамп структуры таблицы в файл и делаете сравнение по файлу.
     
  4. garphild

    garphild Создатель

    Регистр.:
    19 май 2009
    Сообщения:
    10
    Симпатии:
    0
    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='ВТОРАЯ ТАБЛ')

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